ErgoDox組立てとキーマップの話
この前組み立てたInfinity ErgoDoxのキーマップが固まりつつあるのでご紹介。
ちなみにErgoDox とはオープンソースの左右セパレート型キーボードで、名前の通りエルゴノミクスな設計により肉体への負荷を軽減してくれるキーボードであり、朝起きてから寝るまでキーボードの前に座って腱鞘炎と闘うemacser御用達の素敵アイテムであります。
ErgoDoxの優れている点は、親指という最も強靭な指を効率的に使えるように広大な親指エリアが設けられていること、ファームウェアもオープンソースなので自由なキーマップがプログラムできること、あと左右セパレート型なので肩や手首への負担が軽減できること、などです。
腕を開いて胸を張った自然な姿勢で打鍵していると、これがタイピングのあるべき姿なのだという感慨がふつふつと湧いてきます。ぼくは今から予言しておきますが、今後は左右セパレート型じゃないキーボードを会社が提供した場合即労災が適用されるようになってくると思います。
ErgoDoxの入手先
現状でErgoDoxの購入先は3つくらいある。
- IndiegogoにてErgoDox EZ(完成品)を注文することができる。高さ調節用のチルトが付いてたり、見た目に手作り感がなくてなんとなくクォリティが高い感じがする。
- FalbaTechではパーツの素材やカラーに選択の自由がある。パーツによってはかなりキューティクルな見た目のErgoDoxに仕上げることも可能。
- MassdropにてInfinity ErgoDoxの組み立てキットが提供されており、半田ごてを用意して自分で組み立てる必要がある。僕の場合、Massdropで注文してからkitが届くまでに2,3ヶ月かかった。Infinity ErgoDoxには上部にLCDディスプレイが付いており、ファームウェアを書き換えることでLCDの発光パターンや表示パターンを自由に設定することができる。
ファームウェアについては、ErgoDox EZは前回のPlanckキーボードと同じqmk firmwareが提供されている。Infinity ErgoDoxについてはKiiBohd controllerが提供されている(WhiteFoxも同じ。Massdrop系はこっちっぽい)。
ぼくはしばしばMassdropで買い物してる流れでInfinity ErgoDoxを購入して組み立てました。
ファームウェアのビルド
ファームウェアをビルドする前にdfu-utilを用意する。Macの場合はhomebrewで準備するのが楽チン。
brew install dfu-util
オープンソースのFirmwareとしてKiiBohd controllerが提供されている。使い方としては、以下のシェルスクリプトを実行すると、
./controller-master/Keyboards/ergodox.bash
以下の2つのディレクトリができる。右手部分がICED-R、左手部分がICED-Lに対応している。
./controller-master/Keyboards/ICED-L/
./controller-master/Keyboards/ICED-R/
ファームウェアを上書きするときは、右手部分・左手部分それぞれについて、ErgoDox背面のリセットボタンを押した状態で下記コマンドを打てばいい。
dfu-util -D ./controller-master/Keyboards/ICED-L/kiibohd.dfu.bin
キーマップをいじるときは、ergodox.bashでDefaultMapに指定されているファイルを編集する。
./controller-master/kll/layouts/mdergo1Overlay.kll
キーマップをいじるとこを詳しく知りたい人はKiibohd.comを読む。もし単純なキーマップで事足りるならKLL Keyboard Configuratorでバイナリファイルを生成してくれるので楽チン。でもCtrl+Alt+Deleteとかマウス操作の設定とかは多分できない。あと、LCDディスプレイの表示をいじりたいときはCustomizing the Ergodox Infinity LCD Logoが参考になる。
キーマップ
これがぼくが考えたさいきょうのキーマップだ!
# Keymap 0: Basic layer
#
# ,--------------------------------------------------. ,--------------------------------------------------.
# | Grv | 1 | 2 | 3 | 4 | 5 | Esc | | CADel| 6 | 7 | 8 | 9 | 0 | =+ |
# |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
# | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | -_ |
# |--------+------+------+------+------+------| { | | } |------+------+------+------+------+--------|
# | LCtrl | A | S | D | F | G |------| |------| H | J | K | L | ; | '" |
# |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------|
# | LShift | Z | X | C | V | B | | | | N | M | , | . | /? | \| |
# `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
# | Hyper| RCtrl| LAlt | LGUI | MHEN | | HENK | Left | Up | Down | Right|
# `----------------------------------' `----------------------------------'
# ,-------------. ,-------------.
# | L1 | PgUp | | DEL | L2 |
# ,------|------|------| |------+------+------.
# | | | PgDn | | BSpc | | |
# | Space|Lshift|------| |------| LCtrl| Enter|
# | | | SAlt | | RAlt | | |
# `--------------------' `--------------------'
# Keymap 1: Func layer
#
# ,--------------------------------------------------. ,--------------------------------------------------.
# | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
# |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
# | | |mouseU| | | | | | | | | | | | |
# |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
# | |mouseL|mouseD|mouseR| | |------| |------| | | | | | |
# |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
# | | | | | | | | | | | | |LClick|RClick| |
# `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
# | | | |RClick|LClick| | |mouseL|mouseU|mouseD|mouseR|
# `----------------------------------' `----------------------------------'
# ,-------------. ,-------------.
# | L1 | | | | L1 |
# ,------|------|------| |------+------+------.
# | | | | | | | |
# | | |------| |------| | |
# | | | | | | | |
# `--------------------' `--------------------'
ポイントは、
- 親指でShift, Ctrl, Alt, Enterがそれぞれ押せること。Back SpaceについてはCtrl+Hで事足りる(Windowsのときはkeyhacでemacsキーバインドを再現してる)。
- HENKとMHENとあるのは、変換キーと無変換キーで、WindowsではこれらをIMEのOn/Offにアサインしている。このため、Macと同じ感覚で、全角/半角の切り替えができる。
- CADelとあるのはCtrl+Alt+Delete。
- Hyperは Ctrl+Shift+Alt+GUI。ソフト側で変なショートカットを設定したいときに使う。
- L1とあるのはファンクションキーで、これを押している間はレイヤー1のキーマップになる。レイヤー1には試験的にマウス操作を割り当てていて、この操作感がまあ悪くない。でもトラックポイントと比べるとやっぱり使いづらい。
- 職場のWindows用を考えているので、メディアキーの割り当てとかはしていない。
という感じ。
左手小指を酷使しなくなるだけで、左手首や肘の痛みが楽になったことを実感できる。
未来感
最近はPlanckキーボードを中央に配置して未来感を演出するのにハマってる。
こちらからは以上です。