町内一過激な
キーボードカスタマイズ
Part 1
ハードウェア
まず第一にハードウェアとして、
私は KINESIS 社の Ergonomic キーボードを選択しました。
外見は大体以下のような感じです。
実を言うとこのキーボード、
私の手にとっては少々大きいような気がします
(私は昔から怠惰な人間だったので、
人並みの大きさに成長するのさえ面倒だったのです)。
が、それでも通常のキーボードに比べるとはるかにマシです。
特に、バックスペースやコントロールなど、
頻繁に使うキーが親指に割り当てられている点は評価できます。
親指は運動性能が高いので、
スペースバーだけに使うには勿体なさすぎます。
Ergonomic キーボードについては、
KINESIS社のWebページ
に詳しい説明があります。
XKB による変更
ハードウェアが決まったところで、
まずはコントロールキーあるいはメタキーと共に用いられる
各種コマンドの配列を変更することにしました。
Emacs は非常に強力なエディタですが、
vi などに比べるとコマンドのキー割り当てに関して
人間工学的な配慮が足りないように思われたからです。
Emacs には define-key という、
キーバインディングを変更するための関数が用意されています。
もちろんこれを使うこともできるのですが、
各種多様な keymap すべてに対して
define-key による変更を加えるのは大変です。
私のように怠惰な人間には、
とてもそんなことはできません。
そこで代りに XKB を使うことにしました。
XKB は X ウィンドーの拡張機能の一つで、
キーボードの配列をほとんど無制限に変更することができます。
しかもキーイベントの変更はすべてサーバー側で処理されます。
つまり XKB を用いれば、Emacs 側で個々の
keymap に対して変更を加える必要はなくなるのです。
私が設定したコマンドキーのレイアウト図を示します。
とにかくコントロールキーとメタキーは左右対称の位置に一つずつ欲しかったので、
まずそれらの位置を確保しました。
次に、よく使われるコマンドのうち、
1ストロークのものは右手の位置に、
2ストローク以上のものは左手の位置にそれぞれ集めてみました。
以下少々説明してみます。
-
'C-f', 'C-b',
'C-n', 'C-p' の4つは、
vi で等価な働きをするキーと同じ位置に置きました。
これらは最もよく用いられるコマンドですので、
こうするのは意味あることだと思います。
-
'C-a' と 'C-e'
は、それぞれ 'C-b' と
'C-f' の激しいもの、と考えることができます。したがって
'C-a' は 'C-b'
と同カラムで一段上、'C-e' は
'C-f' と同カラムで一段上にそれぞれ割り当てました。
-
'C-p' と 'C-n'
が右手のホームポジションで実行できるようになったので、
上矢印と下矢印には他の機能を割り当てることができます。
そこでこれらのキーと
'Page Up' および 'Page Down'
を入れ替えます。
これによって上下スクロールと、
その other-window 版が極めて簡単に実行できるようになります。
-
更に動作上の類似点に基づき、
'Home' と 'End' をそれぞれ
'Page Up' と 'Page
Down'
のシフトに割り当てます。
これによって beginning-of-buffer と end-of-buffer、
およびそれらの other-window 版が簡単に実行できるようになります。
-
もちろん 'C-d' を忘れてはいけません。
これが最もよく用いられるコマンドの一つであることは疑いの余地がありません。
よって右手の人差し指という、
最も運動性能の高い指に割り当ててみました。
-
私はマウスによるカット&ペーストはほとんど行わず、代わりにもっぱら kill
および yank ( 'C-k', 'C-w',
'C-y',
'M-w', 'M-y', etc.)
を用います。
よってこれらのキーは全部まとめて右下に一かたまりにしてみました。
-
'C-x' と 'M-x'
もよく使われますが、
必ずその後に別のキー入力が要求されます。
というわけで左手人差し指に割り当てます。
(左側なのは多ストロークだから。人差し指なのはよく使われるから。)
-
'C-s' と 'C-r'
は非常に便利ですが、
それに引き続いて検索文字列の入力が必要です。
よってこれらも左側に割り当てることにします。
-
Undo は左矢印キーに割り当てました。
Undo は1ストロークのコマンドなので左側に来るのは例外的なのですが、
左矢印には何となく「戻る」というイメージがあるもので。
-
最後に Alt を Meta から独立させ、
更に Super と Hyper もモディファイアとして使えるようにしました。
ここまではいいとして、
ではなぜ 'h' が右側にあって
'z' と 'o'
が左側にあるのでしょうか?
その答えは次のセクションを読めばわかります。
Global-set-key による更なる変更
XKB による変更に加え、
~/.emacs 中で global-set-key による変更
もいくつか試みました。
-
ファイルオープンに関する2つのコマンド、
'find-file' および 'find-file-other-window' はそれぞれ
'C-o' と 'M-o'
に割り当てられています。
コントロールの場合が現在のウィンドーで、
メタの場合が他のウィンドーです。
これらのコマンドはよく使われるのですが、
オリジナルのキーバインディングである
'C-x C-f' および 'C-x 4 C-f'
は私のように怠惰な人間にとっては少々長過ぎます。
どちらのコマンドも引き続いてファイル名を入力する必要があるので、
慣例に従って左側に割り当てます。
下の 'C-z' および 'M-z'
も参照して下さい。
-
さて、'C-o' を使ってしまったとしたら
'open-line' はどうしましょう?
御心配なく。'M-m' に割り当てられています。
ではなぜ 'M-m' か?
それは 'C-m' (すなわち 'new-line') と
'open-line' が一つのペアをなすからです。
つまり、前者はポイントの前に改行を挿入し、
後者はポイントの後に改行を挿入します。
まとめると、
| キー |
関数名 |
説明 |
| C-m |
new-line |
ポイントの前に\nを挿入 |
| M-m |
open-line |
ポイントの後に\nを挿入 |
となります。
-
バッファ移動に関する2つのコマンド、
'switch-to-buffer' および 'switch-to-buffer-othe-window' はそれぞれ
'C-z' と 'M-z'
に割り当てられています。
コントロールの場合が現在のウィンドーで、
メタの場合が他のウィンドーです。
これらのコマンドはよく使われるのですが、
オリジナルのバインディングである
'C-x b' および 'C-x 4 b'
は私のように怠惰な人間にとっては少々長過ぎます。
どちらのコマンドも引き続いてバッファ名を入力する必要があるので、
慣例に従って左側に割り当てます。
上の 'C-o' および 'M-o'
も参照して下さい。
このセッティングによって、
'C-z' と 'M-z'
は使えなくなります。
が、私は一度起動した Emacs をアイコン化することはほとんどありませんし、
'zap-to-char' に至っては使ったことすらないので、
これらが使えなくて困ることはないのです。
-
'C-h' (other-window) と
'M-h' (delete-other-window)は、
ウィンドー切り替えのコマンドです。
ここでのコントロールキーとメタキーの役割分担は、
上記の例に比べるとさほど対称的とは言えません。
いずれにせよこれらはよく使われるコマンドですし、
しかも1ストロークです。
よって右手側に割り当てることにします。
-
'C-h' が別の目的に使われるとしたら、
本来そこにあった 'help-command' はどこに行ったのでしょう?
答えは 'M-i' です。
'I は information の i' と憶えて下さい。
-
'Page Up' と 'Page Down'
の導入によって
'C-v' と 'M-v'
は他の目的に使用可能となりました。
そこでそれぞれを「1行スクロールアップ」と
「1行スクロールダウン」に割り当てます。
画面上に表示されている範囲を微調整するのに便利です。
以上でカスタマイズの第一段階は終了です。
最終更新日 : 2006年12月20日