この記事の周辺で人気が出てきてる(気がする)ErgoDox キーボードに乗り換えました。今もこの ErgoDox でこの記事を書いています。かなりいい感じです。

画像集

ErgoDox with Cat

ErgoDox Chameleon Foil

ErgoDox

ErgoDox が最高のキーボードである理由

@kkosugeが投稿した写真 -

R0013609

購入方法

パーツのほとんどはFalbaTechで揃う。ハンダ付けが必要でめんどくさいイメージがありましたが、今は FalbaTech で組立済みのものが販売されてるので非常に楽です。キーキャップだけはかわいい色がほしくてWASD Keyboardsを利用した。任意のキーの色を選択できて便利なんだけど、ErgoDox 用のキーエディタが用意されていないので、2x と 1.5x のキーを追加で買い足す必要がある。

  • FalbaTech

    • 青軸、Chameleon Foil、キーキャップ以外組立済み
    • 219,00€
    • 9 日くらいで届いた
  • WASD Keyboards

    • 87-Key Custom Cherry MX Keycap Set
    • Row 4, Size 1x2.00 Cherry MX Keycap (R4 1x2.00)
    • Row 3, Size 1x1.50 Cherry MX Keycap (R3 1x1.50)
    • $103.14
    • 5 日くらいで届いた

合計 3.8 万円ほど。安いキーボードではありません。 しかし ErgoDox はオープンソースです。万が一壊れた箇所が出てきたらその部分のパーツだけ付け替えればいいということが期待できますので、最初高い分長く使えるのではないでしょうか。

キー配列

ErgoDox の一番の特徴はなんといっても自由度の高さです。そもそも作り方の全てがオープンソースですので、キー配列なんて自由に変更できます。現状以下の様なキー配列にしていますが、使いにくいキーがあったら随時変えていってるところですので全然最終版ではありません。まだ記号が全然打てない。

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * | Esc    |   1  |   2  |   3  |   4  |   5  | LEFT |           |   6  |   7  |   8  |   9  |   0  |  -   | Del    |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * | Tab    |   Q  |   W  |   E  |   R  |   T  | L1   |           |  L2  |   Y  |   U  |   I  |   O  |  P   | @      |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * | LCtrl  |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |  ;   | LGui   |
 * |--------+------+------+------+------+------| EI   |           | Kana |------+------+------+------+------+--------|
 * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |  /   | RShift |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |  F7  |  =   |  '"  | EI   | LCmd |                                       | Kana | Left | Down |  Up  | Right  |
 *   `----------------------------------'                                       `----------------------------------'
 *                                        ,-------------.       ,--------------.
 *                                        | Prev | Next |       | VolUp | Play |
 *                                 ,------|------|------|       |-------+--------+------.
 *                                 |      |      | Home |       |VolDown|        |      |
 *                                 | Space|Backsp|------|       |-------|  Tab   |Enter |
 *                                 |      |ace   | End  |       | Mute  |        |      |
 *                                 `--------------------'       `----------------------'
 */
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = KEYMAP(  // layer 0 : default
        // left hand
        KC_ESC,    KC_1,         KC_2,    KC_3,   KC_4,   KC_5,   KC_LEFT,
        KC_TAB,    KC_Q,         KC_W,    KC_E,   KC_R,   KC_T,   TG(1),
        KC_LCTRL,  KC_A,         KC_S,    KC_D,   KC_F,   KC_G,
        KC_LSHIFT, CTL_T(KC_Z),  KC_X,    KC_C,   KC_V,   KC_B,   LCTL(LSFT(KC_SCLN)),
        KC_F7,     KC_EQL,       KC_QUOT, LCTL(RSFT(KC_SCLN)), KC_LGUI,
                                              KC_MPRV,  KC_MNXT,
                                                                 KC_HOME,
                                              KC_SPC,   KC_BSPC, KC_END,
        // right hand
        KC_6,       KC_7, KC_8,    KC_9,    KC_0,    KC_MINS, KC_BSPC,
        TG(2),      KC_Y, KC_U,    KC_I,    KC_O,    KC_P,    KC_AT,
        KC_H,       KC_J, KC_K,    KC_L,    KC_SCLN, KC_LGUI,
        RCTL(RSFT(KC_J)), KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,   KC_RSFT,
        RCTL(RSFT(KC_J)), KC_LEFT, KC_DOWN, KC_UP,    KC_RGHT,
        KC_VOLU, KC_MPLY,
        KC_VOLD,
        KC_MUTE, KC_TAB, KC_ENT
    ),

ソースは Github で管理してる。 https://github.com/kkosuge/qmk_firmware/blob/master/keyboard/ergodox_ez/keymaps/kkosuge_osx/keymap.c こだわりポイントとしてはメディアのキーをトップのレイヤー(ErgoDox にはレイヤーという概念があって、これを切り替えるとキーがガラッと入れ替わる)に持ってきてミュージックプレイヤーみたいな使い方が便利なのと、英/かな入力の切り替えが1クリックでできるようになってる。あと使用頻度の高い F7 もトップレイヤーに持ってきてる。

各自でキーをソースからビルドする場合、jackhumbert/qmk_firmware をフォークしてきて、keyboard/ergodox_ez/keymaps 以下に個人用のディレクトリを掘れば、make clean && make KEYMAP=kkosuge_osx みたいなコマンドでビルドできる。書き込み方法などは Google で。

キーの設定方法は同じレポジトリの他の keycaps やkeycode.hを参考に。

日本語入力環境

日本語入力 Mac の日本語キーボードのように英/かな入力を1クリックで切り替えるのは絶対にやりたくて、右上の入力ソースに表示されてるショートカットをキーに割り当ててる。LCTL(LSFT(KC_SCLN)) RCTL(RSFT(KC_J)) みたいな。ただ、これが一番いい方法という気がしていないので真っ当な方法あったら教えてほしいです。

追記:KC_LANG1 & KC_LANG2 で切り替えられるようになりました https://github.com/jackhumbert/qmk_firmware/issues/312

今後の展望

ケーブル変えたい

Ergo-Dox Keyboard Cables – Pexon PCs ここにクールなケーブルが売ってたので欲しい。falbatech で送られてきたケーブルはキーボード間を短めに想定してるようで、ちょっと自分にはあっていないところがある。

トラックポイント付けたい

キーボードとアジャイル開発 - mixi engineer blog こんな感じで、腕を動かさなくてもマウス操作できるようにしたい。

ユーザー増えて欲しい

メンテナンスされる OSS の条件としてはやはりたくさん使われてるものほど高い質が維持されるという傾向があると思います。ErgoDox ももちろんそうで、利用者がいれば今後あらゆる環境で動くように開発続くだろうし、便利なハックが生まれてくると思う。自分はかなり ErgoDox を気に入ってるからずっと使っていくだろうし、そういう道連れを増やしていきたい。