なぜ魔改造する必要があるのか?
このアホみたいなタイトルを見て「ちょっと読んでみようか」と思う連中には、Dvorak 配列のことも Emacs のことも説明不要に違いない。
分からない人は、そもそもこの記事を読む必要はない。
それでも読みたい人は、適当にググってほしい。
さて、なぜキーバインドを魔改造する必要があるかというと、Emacs のキーバインドは QWERTY 配列に最適化されており、Dvorak 配列だと使いにくくて仕方ないからである。
では、なぜそこまで使いにくいかというと、理由は2つある。
- Emacs 固有の打鍵動作が QWERTY 配列のまま身体の OS レベルまで深く組み込まれており、生まれ変わる以外にこれをリセットする方法がないから
- 変態キーボード KINESIS を使っているから
打鍵動作が身体にインストールされている
まず、Emacs のヘビーユーザーなら前者に異論はないだろう。
QWERTY 配列で身体にインストールされた打鍵動作は、Dvorak 配列に変えたからといって、それに合わせて再インストールできるようなチープな代物ではない。
驚いた時に思わず「あっ!」と声をあげたり、コーラを飲むとゲップが出たりするように、それはほとんど身体の生理的な反射になっているのだ。最初から Dvorak 配列で Emacs を使い始めたなら話は違うかもしれないが、さすがにその順序で異世界に足を踏み入れた人は珍しいと思われる。
だから、Dvorak+Emacs に至る最初にして最大の難所がここにあるのだ。
KINESIS キーボードという闇
次に、変態キーボード KINESIS を使っている人は、実はそれほど珍しくない。
知る人ぞ知るハッカー的アイテムとして細々と流通している。
私が最初に買った時(2005年くらい)は、メーカーのアメリカ本社から個人輸入する以外になかったが、なんと、いまは Amazon で買える。大出世である。ニッチな分野で根強い支持が長く続いている証拠と言えよう。
※注:QWERTY と Dvorak とをスイッチング可能な「QD」タイプは、Amazon では買えない点に注意
しかし、Dvorak+Emacs に加えて、この変態キーボードを使うというトリプルコンボをキメたアホは、私を含めて日本には5人くらいしかいないのではなかろうか。
なぜアホなのか?
それは、 KINESIS が「親指で Ctrl, Alt を押す」という特殊仕様のため、Emacs の QWERTY 最適なキーバインドと最高に相性が悪いからである。つまり、本来なら鼎立しない3つの要素を欲張った結果ゲロまみれになった格好で、どう考えてもアホとしか言いようがない。
…というわけで、この理不尽な問題を克服しようと思えば、**「Dvorak 配列のまま QWERTY 配列の打鍵動作を実現するために、キーバインドを魔改造する」**という本末転倒なソリューションに至るわけだ。
だから、この記事のタイトルは正確ではない。**「Dvorak 配列+KINESIS の闇に堕ちたアホでも快適に使えるように Emacs のキーバインドを魔改造する」**が正しい。
要するに、この記事は、たった5人のアホ(うち1人は私)のための記事なのだ。
もう書いてるだけで胃液が増えそうな感じがする。
具体的にどうするのか
まず、Emacs のすべての起点となる C-x
を C-q
に変更する。QWERTY 配列の x キーが、Dvorak 配列の q キーに対応するからだ。同様に、 C-c
を C-j
に変更する。
(global-set-key "\C-q" 'Control-X-prefix)
(global-set-key "\C-j" 'mode-specific-command-prefix)
もうこの時点で何かがおかしい気がするが、愚民的発想はすでにかなぐり捨てているので無問題。
ここを設定しておけば、あとは好きなようにキーバインドを割り当てていけばいい。例えば、こんな感じに。
(global-set-key "\C-q\C-o" 'save-buffer)
(global-set-key "\C-q\C-j" 'save-buffers-kill-emacs)
(global-set-key "\C-q\C-a" 'write-file)
(global-set-key "\C-l" 'set-mark-command)
(global-set-key "\C-t" 'kill-line)
(global-set-key "\C-z" 'kill-region)
(global-set-key "\C-u" 'forward-char)
(global-set-key "\C-x" 'backward-char)
(global-set-key "\C-qx" 'switch-to-buffer)
(global-set-key "\C-q\C-u" 'find-file)
そう、Dvorak 使いなら分かると思うが、すべて QWERTY 配列の打鍵動作をエミュレートするキーバインドだ。笑うな、うるさい、お前ら静かにしろ。
.emacs を晒す
というわけで、5人のアホ(うち1人は私)のために、気の狂った .emacs を GitHub で公開している。
https://github.com/hajime-f/dot_emacs
ツッコミどころが多いと思うので、アホみたいなプルリクを正座して待っている。