Apr 14, 2019
13 mins read

分割エルゴノミクスキーボードで有名なErgoDox EZを導入したのでその設定方法についてメモを残そうと思う。 画像のものは自宅だが、自分はこのキーボードを職場用として使っている。端的に言うと、ErgoDoxサイコーなのでプログラマーはぜひ導入しましょう。
ErgoDox EZの感想を述べると、
慣れるまで大変だけれど、3日もすれば余裕で慣れるし、そのあとはプログラミングがかなり楽になるのでオススメ。
ErgoDoxはキーボードの設計とソースコードをオープンにしているプロジェクトで、ErgoDox EZはそれを製品として販売しているものになる。
https://www.indiegogo.com/projects/ergodox-ez-an-incredible-mechanical-keyboard#/
自由にキーバインドをカスタマイズできたり、キー自体を色々自分で変えて遊んでみたりとプログラマーがオリジナルで自分のキーボードを作れて楽しめるような製品になっている。 購入すると海の向こう側から配送してもらうことになるのだが、1~2週間程度で日本の自宅までやってきた記憶がある。
ErgoDox EZが手元に届いたらまずやることはキーバインドの設定だろう。本エントリではこのキーバインドの設定についてのみメモを残していく。
自分の場合は下記の条件でキーバインドを設定した:
自分がなぜ日本人なのだろうかと思うタイミングの一つにJISキーボード縛りがあると思う。 自分の場合、会社の特殊な環境のおかげでUSキーボードが何故か機能しないという現象に合い、仕方なくJISキーボードで設定をする羽目になった。 当然ながらこの手の海外産の製品はUSキーボードが前提になってしまうため、キーバインドも微妙な違いが出てくる。
また、職場がWindowsとMacbookの両方で作業しているので、両方で使えるようにキーバインドするのが結構大変だった。 ErgoDox EZはキーバインド自体をLayerとして複数持つことができ、かつそれらを自由に追加できるので、 Windows用のキーバインドとMacbook用のキーバインドを用意してあげたりもできる。自分は最終的にLayerを一つ追加してOS毎に対応するようにした。
ErgoDox EZはTeensy USB Development Board と言うソフトウェアを使い、 コンパイルしたファームウェアをキーボードに流し込んでキーバインドを自由に設定することができる。
やり方はシンプルで下記のやり方で設定できる:
.hexを生成ここではまず、ファームウェアのコンパイル方法から説明する。
まずコンパイルに一通り必要なソフトウェアをインストールする。(MacOS前提)
brew tap osx-cross/avr
brew install avr-libc
brew install dfu-programmer
そのあとは、https://github.com/qmk/qmk_firmware/tree/master/keyboards/ergodox_ezのソースコードをダウンロードし、
keymaps/defaultというディレクトリと同じ場所に自分自身のディレクトリを作成して、default以下のkeymap.cと同様のファイルを作成する(コピーして編集するといい)。
それをmake KEYMAP=[your_name]でmakeするとコンパイルされたhexファイルが作成される。hexファイルが作成されたらTeensyに読み込ませてキーボードに流し込むとキーバインドが反映される。
自分でkeymap.cを編集するのが一番自由度が高くて良いが、一番手っ取り早いやり方にGUI上でキーバインドを設定してhexファイルを生成する方法がある。
https://configure.ergodox-ez.com/layouts/default/latest/0
このサイトではGUIベースでキーバインドを決めれるのでとても楽に直感で設定ができる。また、Print layoutから印刷もできるのでキーバインドを覚えるように印刷するのがオススメ。
さて、ここから自分が一番苦労したところである、JISキーボードの設定を書く。
書くといっても答えはシンプルで、USキーボードとは割当てられているキーがJISとは違うので変換して登録をしてあげるだけである。
たとえば、JISの場合の@はUSの場合だと[と打刻される。このように微妙に配列が違う箇所があるので、hexを生成する際にこの差分を吸収してあげないといけない。
JISキーボードとUSキーボードの違いは下記の通りである:
| JIS | US | JIS(Shift) | US(Shift) | Ergodox |
|---|---|---|---|---|
| 1 | 1 | ! | ! | KC_1 |
| 2 | 2 | " | @ | KC_2 |
| 3 | 3 | # | # | KC_3 |
| 4 | 4 | $ | $ | KC_4 |
| 5 | 5 | % | % | KC_5 |
| 6 | 6 | & | ^ | KC_6 |
| 7 | 7 | ' | & | KC_7 |
| 8 | 8 | ( | * | KC_8 |
| 9 | 9 | ) | ( | KC_9 |
| 0 | 0 | 無 | ) | KC_0 |
| - | - | = | _ | KC_MINS |
| ^ | = | ~ | + | KC_EQL |
| \ | 無 | | | 無 | KC_JYEN |
| @ | [ | ` | { | KC_LBRC | | ||
| [ | ] | { | } | KC_RBRC |
| ; | ; | + | : | KC_SCLN |
| : | ' | * | " | KC_QUOT |
| ] | \ | } | | | KC_BSLS |
| , | , | < | < | KC_COMM |
| . | . | > | > | KC_DOT |
| / | / | ? | ? | KC_SLSH |
| \ | 無 | _ | 無 | KC_RO |
要するに上記の差分表を意識して、自分の意図するキーバインドを設定してあげると良い。 ErgoDoxの場合はUSキーボード前提なので、言葉の意味合いがJISキーボードの場合だと変わってしまうと言うだけである。 自分はGUIサイトでこの差分表を見ながらJISに合わせて設定をした。結構めんどくさかったが、一度やってしまえば二度とやる作業ではないのでまあ頑張るしかない。
JISキーボード対応以外にもファームウェアのRESETボタンを事前にキーバインドに設定しておいたり、 Layer間移動の設定や、英語と日本語の変換などと細かい設定が必要だが、それぞれ自分の好きなところにキーを設定できるのはとてもありがたい。 割と何度もファームウェアの流し込みを繰り返しながら、自分に合うキーバインドを探すことになるがこれは結構楽しかった。
おかげで生産性は上がった気がするので、キーボードはプログラマーにとってやっぱり大事な道具の一つだよなと改めて思う。
Sharing is caring!