これまでのキーボードにまつわる経歴

久しぶりにブログを更新する。

最近PCのキーボードを新しくした。その経緯と新しいキーボードに関することをこれからいくつかの記事に分けて書こうと思う。まずはこれまでの経緯を書く。

以前私はPC98用のキーボード を使っていた。PC98というのは20世紀にNECが販売していた独自のアーキテクチャのパソコンである。PC98が生産終了しても相当しばらくの間キーボードだけはPC98のものを使っていた。PC98のパソコン本体を私が使っていた期間はごくわずかで、キーボードだけをずっと使い続けていた。

en.wikipedia.org

98キーボードはUSBなんてものが登場する前の製品なので、現代のパソコンに接続するにはPC98のレガシーな接続規格をUSBに変換する装置が必要だった。生産終了した98キーボードはハードオフで100円で買うものだったが、変換装置は1万円ぐらいするものだった。変換装置は家電量販店やパソコンショップにあるようなものではなく、製作している会社から直接取り寄せるマニアックな代物だった。

98キーボードはカーソルキーが普通に上下左右に並んでいて使いやすかった。現代のキーボードのカーソルキーは山型の配置だったり、上下がやたら小さかったりして使いづらい。98キーボードはスクロール上下や行の先頭最後への移動も、キーボードに視線を移すことなく手触りだけでキーの場所がわかる。テンキーもあり大きなキーボードだったが、端のほうにある特殊キーも含め完全にブラインドタッチできた。単に私の指先や手のひらの触覚が98キーボードに最適化されすぎていただけの可能性もあるが。

現代のキーボードはごちゃごちゃとキーが配置され、視線をキーボードに落とさないとキーを見つけることができない。とくに右下など端のエリアはボタンが飾りにしかならない。端のエリアはパソコンやキーボードによって配置が異なるし、一番触れる機会の多い業務PCも愛着があるわけではないので、指先がキー配置を覚えられない。

98キーボードにこだわって使い続けていたわけだが、あるとき変換装置の予備を買おうとしたらもう入手できなくなっていることに気がついた。98キーボード以外のキーボードで入力することができない指になっていたため、98キーボードが万が一壊れたときに備え予備を確保しようと100円のキーボード本体は複数買えたが、変換装置がすでに入手困難だった。製造元に問い合わせたが、中のパーツに入手困難なものがあるために製造てきなくなったとのこと。

しかし、98キーボードの変換装置が入手不可になってまもなく、個人PCも業務PCもMacに統一できた。Windows PCのキーボード配置にはなじめなかったが、Macのキー配置にはあっさりなじむことができた。MacEmacsキーバインドが使えるため、キーボードの右端のエリアを使わずに済むためであった。以前からエディタはEmacsを使っていたためストレスなくMacに慣れることができた。Macへの移行により98キーボードから卒業できた。

時が流れ、業務PCが再びWindowsになった。それ以降私はPCのキーボード操作が不自由になってしまった。

WindowsキーバインドをカスタマイズしまくってEmacsキーバインドに近づける努力をした。以前はKeyhacを、今はAutoHotkeyなどを使っている。しかしアプリによって、あるいは時と場合によってキーバインドのカスタマイズが効かないときもあり、大変なストレスである。ブラウザ上のアプリでテキスト編集中に切り取り(Ctrl+W)しようとしたら突然アプリが消える(タブが閉じられる)事故がよく起きる。ファイルを保存(Ctrl+X Ctrl+Sの2ストローク)しようとしたら選択していた部分が消え(切り取り)ただちにファイルが保存されてしまうこともある。何を押せばコピー&ペーストができるのかがわからなくなって、マウスで右クリックしてメニューを選ぶこともよくある。ChromeのDeveloper Toolsを開くためのショートカットが使えず、毎回マウスでポチポチしないと開けない。

エディタはTerminal上でのEmacsを使えるのでテキスト編集は不自由ないが、GUIアプリを操作するのがつらい。

そして、テキスト編集がEmacs以外でできないのも大問題である。

昨今、開発時にVSCodeのような環境を使うのが当たり前になっている。VSCodeは開発に便利な機能が多くそろっており、本当はVSCodeを使いこなしたいが、Emacsから離れられない。VSCodeEmacsキーバインドを実現するプラグインを入れている。それでも操作性がEmacsと完全に同じになるわけではなく、VSCodeの操作は大変ストレスである。

ここ数年は、1年に一度ぐらいのペースでVSCode移行チャレンジをしてきた。移行しようと決めてEmacsを起動しないように心に決める。しかし、途中で挫折しEmacsに戻ってしまう。VSCode移行チャレンジをなんどかやってきたが、VSCodeになじめなかった。

ただ、今年に入ってGitHub Copilotなども普及してきて、さすがにVSCodeに移行しないと時代についていけなくなるという焦りが出てきた(数年前から同じことを繰り返し思っているが)。そして改めてVSCodeに完全移行したいのだ。

KeyhacやAutoHotkeyなどのソフトウェアでEmacsキーバインドを再現するのもいい加減疲れてきたのである。どんなに設定してもうまくいかないケースがあるのだ。Windowsを使い始めてから何年も経つのにいまだにキーボードを使いこなせてない。

そんな中、最近Remapというキーボード配置をカスタマイズできるツールを知った。Remapはカスタマイズ結果をキーボードのハードウェア側に記録する。レイヤーの概念があるし、単発で押したときと長押しした時とで役割を変えられるし、普通の文字のキーも修飾キーも対等にカスタマイズできる。これを使えば欲しいキーバインドがだいたい実現できそうである。

RemapでキーバインドをカスタマイズすればWindows上のソフトウェアでカスタマイズする必要がなくなるし、Windowsからは普通のキーボードとしてキーコードを受信して標準の動作をすればよいので、カスタマイズがときどき効かないといった問題も起きなくなるだろう。PCが変わるごとにキー配置のカスタマイズに苦労することもなくなる。これまでカスタマイズが大変すぎてPCの交換ができなかったのである。

私がずっと欲しかったキーバインドのカスタマイズはRemapだったのだ。

制約として、Remapというツールは自作キーボードにしか使えない。それならばキーボードを自作しよと考えた。Remapは自作キーボードの界隈ではデファクトのようで、自作キーボードのためのソフトウェアらしい。だが、私はRemapを使うために自作キーボードにすることになる。自作キーボードならば愛着がわき、キー配置を覚えるモチベーションにもなり、それが結局はスムーズなキーボード操作につながるだろう、という期待もある。

自作キーボードに移行しそのキーバインドに慣れたら、今度は逆にEmacsを使えなくなるはずである。切り取りのつもりでCtrl+Wを押したらCtrl+Xのキーコードが送信されることになり、Emacsでは切り取りの動作にならないからだ。Emacsキーバインドをハードウェアで実現することの引き換えに本物のEmacsをあきらめることになる。ここにきてEmacsからVSCodeに完全移行が実現することになる。

Terminalでのコマンドライン操作には支障がでないように慎重にキーバインドを設計するつもりである。例えばCtrl+KはTerminal上でCtrl+Kになるようにし、GUIアプリではCtrl+Kの操作をあきらめる。

自作キーボードに慣れたらそれ以外のキーボードが使いづらくなるはずなので、自作キーボードは持ち歩けるようにする必要がある。したがって極力小さくなるようにキーの数を絞る。そして、持ち歩きの利便性のためにトラックボールを内蔵したキーボードにしたい。

ちなみに私はトラックボールを使ったことがない。果たして慣れることができるだろうか。

自作キーボードも初めてである。はんだ付けの経験は少ないのだが、うまく作れるだろうか。自作キーボードに出てくる用語がぜんぜんわからないので、ブログや動画を見まくって理解するしかない。

さらにいうと、自作以前に私はキーボードをほとんど買ったことがない。私は98キーボードとMac標準以外で使いこなせそうなキーボードに出会ったことがないので、PC標準添付以外のキーボードを購入したのは、ハードオフで買ったの100円の98キーボードだけである。

ところで、最近私は韓国語を勉強している。だからPCでハングルの文字を入力したい。Windowsで入力言語をインストールすれば入力できるが、言語切り替えをしないといけない。もちろんショートカットで切り替えられるのだが、このショートカットがとても押しづらい。言語の切り替えはみんなが使うような機能ではないから押しづらい組み合わせしか与えられないのだろう。自作キーボードならば専用の切り替えキーを用意できるため、ハングルを入力する心理的障壁が大幅に減るはずである。これも自作キーボードに移行したいきっかけのひとつである。

いちおう市販品のキーボードのカスタマイズ性も軽く調べたが、自作に比べるとキーバインドのカスタマイズ性が劣りそうである。

ということで自作キーボードを検討することした。次の記事に続く。

次の記事 suzuki-navi.hatenablog.com