見出し画像

EmacsキーバインドをKeyball44に実装

Emacsキーバインドをハードウェアで実現したかったのが自作キーボードのきっかけのひとつでした。以下のキーをおおむねEmacsキーバインドに従って配置しています。(一部はEmacs関係なくLinuxで普通なキーバインドが混ざっているかも)

  • カーソル移動

    • 上: Ctrl+P

    • 下: Ctrl+N

    • PageDown: Ctrl+V

    • PageUp: Alt+V

    • Home: Ctrl+A

    • End: Ctrl+E

    • テキスト選択: Ctrl+Space のあとにカーソル移動

  • クリップボード

    • Copy: Alt+W

    • Cut: Ctrl+W

    • Paste: Ctrl+Y

  • 編集系特殊キー

    • Enter: Ctrl+M

    • Backspace: Ctrl+H

    • Del: Ctrl+D

    • Escape: Ctrl+G

    • Tab: Ctrl+I

  • そのほか特殊キー

    • 検索(Ctrl+F): Ctrl+S

    • 保存(Ctrl+S): Ctrl+J S

    • もとに戻す(Ctrl+Z): Ctrl+J U

    • VSCodeで別の編集ペインに移動: Ctrl+J O

    • VSCodeでカーソルが中央になるようにスクロール: Ctrl+L

「おおむね」と言ったのは2ストロークの操作(保存、もとに戻す、VSCodeで別の編集ペインに移動)の1ストローク目だけ違っているためです。Emacsでは1ストローク目がCtrl+Xですが、Keyball44ではCtrl+Xを押すのが困難だったため、Ctrl+Jに変更しました。

Keyball44でCtrl+Xが押しづらい理由は、CtrlとXが近すぎるためです。今までは左手を少し左に寄せて小指でCtrl、人差し指でXを押してました。今まで使っていた標準のキーボードでは、Ctrl(CapsLockをCtrlにしていた)が2Uぐらいの大きさ(横長)で、かつロウスタッガードのためXが右にずれていることでCtrlとXに距離があったためにそのような運指だったのかもしれません。Keyball44ではCtrlが1Uの大きさしかなく、カラムスタッガードのためXがSと横位置が同じため、いままでの運指ができなくなったのかもしれません。Ctrl押しながらで空いている場所で押しやすい場所を探したらCtrl+Jになりました。Ctrl+Jのあとの2ストローク目はCtrl押しながらでも離してしまってもどちらでも機能します。

カーソル移動の左右はEmacsキーバインドの例外になっています。カーソル右キーはEmacsキーバインドのCtrl+Fのほかに Ctrl+< にも重複して割り当てています。カーソル左キーはEmacsキーバインドであるCtrl+Bには配置せずに Ctrl+> に割り当てています。その経緯は前回の記事に書きました。

「VSCodeで別の編集ペインに移動」はVSCodeで「Focus Next Editor Group」コマンドに適当なショートカットを設定し、Ctrl+J Oを押すとKeyball44からはそのショートカットキーを送信するようにしています。

「VSCodeでカーソルが中央になるようにスクロール」はVSCodeにCenter Editor Windowというプラグインを入れることで実現しました。Ctrl+Lを押すとKeyball44からはそのままCtrl+Lというキーコードを送信しています。

CtrlレイヤーとAltレイヤーのうちEmacsキーバインドで使わない部分は、Emacsと関係なく必要な記号やショートカットなどを割り当てています。

ちなみに、これらのキーマップは最初のうちはRemapで設定していたのですが、ファームウェアでカスタマイズする範囲が広がるにつれてRemapとファームウェアを使い分けるのが面倒になってきたため、途中からRemapを使わずにすべてファームウェアにキーマップを書くようになりました。QMK Firmwareでキーマップやカスタマイズ処理を自由に書くようになりRemapを使わなくなると、QMK FirmwareからVIAのサポートを削除できます。すると、ファームウェアのサイズを大幅に削減でき、複雑なカスタマイズを多く書けるようになります。これはとても便利です。Keyball44制作前はRemapを使えるようにあることを楽しみにしていたのに、予想に反して1か月経たずに使わなくなってしまいました。Keyball44制作直後のファームウェアのカスタマイズに慣れる前はRemapがないとKeyball44を使うことができなかったので、Remapに感謝はしています。

この記事が気に入ったらサポートをしてみませんか?