キーボード沼の浅瀬で足を取られかけた話

キーボード沼 PC/デジモノ

Keychronをきっかけにキーボードのカスタマイズに興味を持ち始めた私が、Emacsキーバインドの導入やレイヤー設定、そして思わぬ落とし穴まで──その沼の浅瀬で足を取られかけた記録です。

沼の入り口はKeychron

Keychronのキーボードはキーカスタマイズができるのが特徴の一つです。

キー1つ1つの役割を自由に変更することができたり、レイヤー機能を使って複数の機能を1つのキーに割り当てたりすることができます。

しかも、Windows上のソフトウェアで実現しているわけではなく、その設定をキーボード本体に保存することでPCを変えてもそのカスタマイズが有効になるという点が素晴らしいです。

これはKeychronのキーボードの専売特許ではありません。
HHKBやRealForce、Nuphy、Lofreeといったメーカーの”こだわり派お高めキーボード”ではほぼ標準搭載といってもよい機能ではあります。
ただ、一般的選ばれるようなキーボードではまず搭載されていません。Logicoolのパンタグラフ式最高峰MXKEYSminiでもキー割り当てを変更できるのは一部のキーのみですし、それもソフトウェアによる制御です。

実際、私もこのような機能を持つキーボードを購入したのは初めてでした。
“ぼくのかんがえるさいきょうのキーボード”をあれこれいじって作り替えていくのは楽しい作業です。

最初は初期状態で気に入らない部分をちょっと修正する程度でした。
InsertやPrtScrがないとか、CAPSLOCKとCONTROLの位置が気に食わないとかそういった細かいところは自分で好きなように変えてしまえばよいわけですね。

で、ある程度いじって遊んでみてEmacsキーバインドをキーボード本体に設定してしまえば良いことに気が付きました。

Emacsキーバインドとは

Emacsというのは、UNIX用に開発されたテキストエディタであり、現在でもLinuxを中心に広く使われています。私もLinuxのセットアップ時には真っ先にインストールします。

で、このEmacsではコマンドが特徴的で、例えばカーソル移動はCtrl+Fで右、Ctrl+Bで左、Ctrl+Pで上・・・などとなっています。

キー 挙動
Ctrl + f カーソルを1文字右に進める
Ctrl + b カーソルを1文字左に進める
Ctrl + n カーソルを1行下に進める
Ctrl + p カーソルを1行上に進める
Ctrl + a カーソルをその行の先頭に進める
Ctrl + e カーソルをその行の末尾に進める
Ctrl + h カーソルの前を一文字消す

一見するとわけがわからないのですが、手をホームポジションから離さずに多くの操作が可能なように設計されています。
このようなキー割り当てをEmacsキーバインドなどと呼ばれています。

私もEmacsを使いつつも、使用頻度の高くないLinux上での操作のためだけに覚えるのは面倒ということで避けていた部分です。
ちょっととっつきにくいですからね。

VSCODEなどではEmacsキーバインドに対応するためのプラグインが公開されていますが、VSCODEでだけ使えてもメリットは大きくありません。すべてのアプリケーションで使用できなければ無駄が多いと考えてしまいます。

キーボード本体のカスタマイズ性の高さが輝く

基本的なEmacsキーバインドをキーボード本体に設定してやれば、特定のアプリケーションだけでなく、OSの操作を含むすべての環境でEmacsキーバインドを利用できることに気が付いたというわけです。

KeychronLauncher

キーボード操作がこれに統一できるならば多少クセのあるキーバインドを覚える価値があります。

CAPSLOCKをレイヤー切り替えのホットキーとして、CAPSLOCKを押している間だけEmacsのキーバインドを受け付けるように設定しました。
ControlはそのままControlとしてありますので、従来の操作体系を崩すことなくEmacsキーバインドを使用できます。

Emacsの機能すべてを割り当てる必要もないので、登録したのはカーソル移動とバックスペース、エンターあたりの頻出コマンドのみです。

また、一部のコマンド(Ctrl+X,Ctrl+S,Ctrl+C,Ctrl+V)などはそのまま登録しているのでCapslockをCtrl的に使用することもできるように工夫しました。
上記コマンドはEmacsでもそのまま同じコマンドなので競合することもありません。

で、Emacsキーバインドを使い始めて1~2週間程度ですが一部のキーはだいぶ指が覚えてきました。
特にCtrl+HでBackSpaceが使用できるのが本当に使いやすいです。
キーの打ち間違いが多いので頻繁にホームポジションから遠いBackSpaceを押さなければならなかったのが瞬時にやり直しができるようになったのです。

他のコマンドももう少し使えば何とかなりそうな感覚でした。

ここで問題発生

KeychronのB2ProでEmacsキーバインドの設定をし、気をよくしてB1Proを追加購入しました。

しかし、ここで問題が発生しました。レイヤー切り替え+Bキーのみ割り当て不可だったのです。

B2Proでは問題ないのですが、B1ProはFn+Bキーはバッテリーチェックに割り当てられている仕様だったのです。B6ProもB1Proと同時期に発売されたものなのでおそらく同じ仕様だと思われます。

公称1200時間の長駆動時間をアピールしているわけですし、わざわざバッテリーチェックなんてしないわけです。こんな無駄なものに一等地(右手でも左手でも打てる数少ないキー)を使ってしまうのはどうかと思うのですが、仕様なものはしょうがないです。
B2Proではこの機能はなくなったようなので評判が悪かったのでしょう。

もう一つの問題

今回の方法だと、私が至高のキーボードとして愛用しているLogicoolのMXKEYSminiではこれらのEmacsキーバインドが使えなくなってしまうのです。

これはキーボードという沼に片足を突っ込んだ状態です。あまりよろしくありません。

解決策

Emacsキーバインドをエミュレートするソフトウェアを自作して解決しました。
せっかくキーカスタムできるのに意味ないじゃん!というのはごもっとも。最初からこうしていればよかったという話です。実質的にWindowsしか使わないのでこれで済んだ、という話でもあります。

キーボード沼は奥が深そうなのでズブズブにはなりたくないのです。

このテクニカルな部分はまたそのうちに書こうと思います。

コメント