Webサービスやアプリを開発して運営するのが趣味です。



めちゃカワなキーボード ErgoDox を手に入れた!!

2016年05月04日 23:36

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

画像集

ErgoDox with Cat

ErgoDox Chameleon Foil

ErgoDox

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

@kkosugeが投稿した写真 - 2016 5月 3 5:55午前 PDT

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を気に入ってるからずっと使っていくだろうし、そういう道連れを増やしていきたい。