タイムラインで購入している人がちらほらいて,評判も良好みたいなので ErgoDox EZ というキーボードを試しに買ってみることにしました.購入したのは無刻印+アームレスト付きの赤軸です.
(画像は公式サイトから)
とりあえず購入して1ヶ月経ち,そこそこ慣れてきて違和感なく打てるようになってきたので,この辺りで備忘録がてらまとめてみることにしました.
購入
他の人のブログを読んでいると手続きして2週間以上かかったりしていたので,お盆明けぐらいに届けば良いかなーという気持ちで7月22日に購入手続きをしました.しかし実際は台湾からの発送で1週間で届きました.8月頭に1週間サンフランシスコ出張があったので受け取れなかったら返送されてしまうとヒヤヒヤしましたが何とか直前に受け取れました.
セットアップ
出張前にとりあえずセットアップだけしました.と言っても箱から出して高さを調節して設置してみて,ファームウェアのビルドができることを確認しただけです.
この記事がとても参考になりました.コマンドラインから make
一発でビルドしてファームをキーボードのマイコンに焼きこむところまで出来るのでかなり楽です.
ErgoDox のキーボードファームウェアはオープンソースで開発されているので,リポジトリ を手元に clone してきて必要なクロスビルド用のライブラリを Homebrew で入れるだけで OK です.
他の人のブログ記事を読んでいると qmk_firmware
リポジトリを fork して自分の設定を足している人が多いですが,僕は設定ファイルは極力 dotfiles に置きたいので,clone してきたリポジトリ内に ergodox/keymaps/rhysd
をつくってその中に dotfiles からシンボリックリンクを張りました.この辺は何でも良さそうですが.
なお,デフォルトだと PC がスリープ状態になったときに LED が光って邪魔だったのですが,Makefile 読んでみるとビルド時に指定することでオフにできました.
$ make teensy KEYMAP=rhysd SLEEP_LED_ENABLE=no
キー配置を考える
キーマップいじくるのは好きなのでお盆休みあたりに少し色々試してみました.キーマップは C 言語のプリプロセッサマクロで簡単に定義できます.最終的なキー配置はこんな感じ.(設定ファイル)
- 左側
,---------------------------------------------------. | ESC | 1 | 2 | 3 | 4 | 5 | 6 | |--------+------+------+------+-------+-------------| | Tab | Q | W | E | R | T | { | |--------+------+------+------+-------+------| | | LCtrl | A | S | D | F | G |------| |--------+------+------+------+-------+------| } | | LShift | Z | X | C | V | B | | `--------+------+------+------+-------+-------------' |C-Left| | | LAlt |LG/Eisu| `-----------------------------------' ,--------------. |LGuiEnt| | ,------|-------|------| | | | Home | |Ctrl/ |TapL1/ |------| |Space |Tab | End | `---------------------'
- 右側
,----------------------------------------------------. | | 7 | 8 | 9 | 0 | - | = | |------+------+-------+------+------+------+---------| | _ | Y | U | I | O | P | \ | | |------+-------+------+------+------+---------| |------| H | J | K | L | ; | '" | | = |------+-------+------+------+------+---------| | | N | M | , | . | / | ` | `-------------+-------+------+------+------+---------' |RG/Kana| RAlt | [ | ] |C-Right| `------------------------------------' ,---------------. |AltTab|LGuiSpc | |------+--------+--------. | PgUp | | | |------|BackSpc |RShift/ | | PgDn | |Enter | `------------------------'
基本的には英字配列からあまり外れないように
慣れるのが大変そうなので,基本的な配置はなるべく US からあまり外れないようにしました.例えば左端の Ctrl や Shift などのキーは残す,以前のキーボードで左手で押していた 6 キーは引き続き左手で押せるように移動する(デフォルトでは右手で押すようになってた)など.
ただし,ErgoDox のキーボードの列数は HHK のそれよりも少ないため,どうしても足りなくなります(特に右端の記号列).これはどうしようもないので,あぶれた [ と ] は最下段へ… これはちょっと押しにくいのでもう少し考えたいところです.今までのキーボードは小指の守備範囲が広くて,記号を多用するプログラミングでは結構つらかったので,それが解消されるならお釣りがくるかなという感じです.
単押し,複数押し
ErgoDox ではモディファイアキー(他のキーと一緒に押す Ctrl などのキー)の挙動をかなり細かく指定することができます.例えばキー単体を押した時は半角スペースを入力し,他のキーと一緒に押した時は Ctrl として働くといったことができます.また,Ctrl を押した次のキー入力が Ctrl と一緒に押した扱いになるワンショットなどの挙動も指定できます.
親指にたくさんキーを割り当てられるので,ここはしっかり活用したくて特に左右に2つずつある大きい親指キーには単押しと複数押しにそれぞれ割り当てています.
,---------------. ,---------------. |LGuiEnt|LGuiSpc| |AltTab|LGuiSpc | ,------|-------|-------| |------+--------+--------. | | | Home | | PgUp | | | |Ctrl/ |TapL1/ |-------| |------|BackSpc |RShift/ | |Space |Tab | End | | PgDn | |Enter | `----------------------' `------------------------'
- 左手親指
- 単押しはスペースキー,他のキーと同時押しで Ctrl キー
- 単押しはタブキー,他のキーと同時押しでレイヤー2(後述)のキー配置
- 右手親指
- 単押しは Enter キー,他のキーと同時押しで Shift キー
- バックスペースキー
これだとキー長押しのキーリピートができなくなるのではと思われるかもしれませんが,同じキー2連打以降の長押しはキーリピートとして扱われる仕様のため問題ありませんでした.
ちなみに親指向けにはさらにキーが配置できるようになっていますが,一番外側の縦3つのキーはホームポジションから指が届かないのでほぼ使ってません.この辺は外国人サイズなのかも.さらに Vim 的には Esc キーが親指のほうが良いかなとも思ったのですが,普段 jj
で挿入モードから抜けるようにしているのと,Vim 以外ではほとんど使わないので Esc キーは普段の位置に収まりました.
英数キー,かなキー
僕は IME の状態を覚えておかないといけない 半角/全角 的なトグルキーが嫌で Mac の JP 配列のような英数キーやかなキーを使っています.HHK ではその挙動にするために Karabinar のお世話になっていたのですが,今回はファームウェアのキーマップ書き換えで出来そうなのでやってみました.
最初調べて出てきた情報によるとパッチを当てないとだめとのことでしたが,該当箇所を確認したところ既に修正された跡がありました.issue を漁ってみると下記を見つけました🙏.
Can't use KC_LANG1 & KC_LANG2 key
どうやら既に LANG1
がかなキー, LANG2
が英数キーとして使えるようなのでそのまま使ってみるとちゃんと動きました.Karabinar で設定していたのと同じように,単押しで IM 切り替え,他のキーと同時押しで Cmd キーになるようにしました.
Alfred や iTerm2 に1キーでアクセス
僕は普段ターミナルで作業するので,Cmd+Enter で iTerm2 を全画面トグルで使えるようにしています.また,Alfred もよく使うので,Cmd+Space にホットキーを設定しています.
ErgoDox ではこれらのホットキーを1ボタンに割り当てています.左親指キーの LGuiEnt
というのがターミナルのトグルで,右親指キーの LGuiSpc
というのが Alfred のホットキーです.頻繁に使うアプリのホットキーが1キーになることで思ったより楽になりました.
また,左右のワークスペースへの切り替えも最下段の一番端のキーのみで行えるようにしました(C-Left
と C-Right
がそれです).元々 Karabinar に頼って Ctrl + 左Cmd/右Cmd で切り替えというかなり変わったキー配置をしていたのですが,それが1キーで出来るようになりました.
キー配置レイヤー
ErgoDox ではキー配置にレイヤーを持たせることができ,Vim のモードのように複数のキー配置を切り替えることができます.レイヤーは3つ設定できます(デフォルトのレイヤーが L0 なので残りの L1 と L2).各レイヤーには Vim のようにキー入力で遷移したり,キーを押している間だけレイヤーを変えたり,キーを押した次の入力だけレイヤーを切り替える(ワンショット)といった好きな方法でアクセスできます.
僕はレイヤー3つは使いこなせる感じがしなかったので L1 だけ使い,F1〜F12 や方向キー&Home・Endキー,列が足りなくて再現できなかった右端の記号列のキー配置を設定したりしてますが,F1〜F12 と方向キーぐらいしかちゃんと使えていません.もっとレイヤーを使いこなしたい…
ErgoDox のキー配置(物理)について
ErgoDox は今まで僕が使ってきたキーボードとは違い,縦にまっすぐにキーが配置されています.そのため,以前のキーボードに慣れている指では最初誤入力が多発しました(特に C と V とか).これについてはキーボードに対する腕の向きが大事でした.一般的なキーボードは,キーボードに対して腕がハの字になるように設計されていると思います.それに対して ErgoDox では腕がキーボードに対して垂直になるように意識的に直してやる必要がありました.腕の向きを直すと大分誤爆が減りました.
また,ErgoDox に慣れると今までのキーボードが打てなくなるのではという懸念がありました.しかし今までは HappyHacking (US配列) を使っていて,職場では静音の Realforce (JP配列) を使っているので,新しい配列が加わったという感覚で,今までのキーボードが打てなくなるといったことは無さそうです.
打鍵感と音と振動
これらについては残念ながら以前の HHK のほうが遥かに良かったです.
打鍵感は HHK のほうがキーの押し込みがスムーズで押し心地が良いです.さすがに静電容量無接点方式にはメカニカルでは敵わないのかなという印象でした.
また,僕はキーの押下圧が強くて,HHK の時は特に気にならなかったのですが,ErgoDox では入力の振動が机に伝わってしまってモニターが少し揺れたりすることがあります.この辺りは良い机を買ったりすれば少しマシになるのかもしれませんが…
あと,音もちょっと気になりました.静音でない HHK Pro2 よりも大きいです.自宅では特に気になりませんが,職場でこの音は僕的にはちょっと…という感じです.
肩凝り
僕は昔から結構肩凝りがひどいのですが,それはかなりマシになりました.肩が開いて姿勢も良くなるので,そのおかげだと思います.日中ずっとキー入力していても肩がつらくなってきて中断といったことはほぼなくなりました.
まとめ
今の時点でもう ErgoDox のみでコードを書いたりツイートを書いたりしていて,特に困っていないです.前述のとおり肩凝りが解消されたのと,かなり小指の負担が減ったように思います.あと,キー配置やキーの挙動の自由度がかなり高いので,新しいキー設定を思いついたら即試せて今後も楽しめそうです.
僕自身はキーボードを組み立てる技術が無いので壊れた場合のサポートとかが少し不安ですが,その時は HHK にフォールバックして考えます.新しいおもちゃが手に入ったというのと,肩凝り解消などの実益で,僕にとってはなかなか良い買い物でした.