Next: , Up: Key Bindings   [Contents][Index]


49.3.1 キーマップ

Commandsで説明されているように、各Emacsコマンドは、対話的に使用することを条件として定義されたLisp関数です。すべてのLisp関数と同様に、コマンドは小文字とハイフンからなる関数名をもちます。

キーシーケンス(key sequence) — 短くはキー(key) — とは、1つの単位として意味をもつ、連続する入力イベント(input events)のことです。入力イベントとは文字、ファンクションキー、マウスボタン — つまりコンピューターに送ることができるすべての入力のことです。キーシーケンスは、それが何のコマンドを実行するかを指示するバインディング(binding)により、意味をもちます。

キーシーケンスとコマンド関数との間のバインディングは、keymaps(キーマップ)と呼ばれるデータ構造に記録されます。Emacsには多くのkeymapsがあり、それぞれが特別の機会に使用されます。

一番重要なキーマップは、グローバルキーマップ(global keymap)です。なぜならグローバルキーマップは常に効果があるからです。グローバルキーマップはFundamentalモードにたいしてキーを定義します(Major Modesを参照してください)。これらの定義のほとんどは、、ほとんどすべてのメジャーモードでは一般的です。メジャーモードまたはマイナーモードは、いくつかのキーにたいするグローバル定義をオーバーライドするために、それぞれ独自のkeymapをもつことができます。

たとえばgのような自己挿入文字(self-inserting character)は、グローバルキーマップがそれをコマンドcommand self-insert-commandにバインドするので、自己挿入を行なうのです。C-aのような標準的なEmacsの編集文字もグローバルキーマップから、それらの標準的な意味を取得します。M-x global-set-keyのような、キーをリバインドするコマンドは、新しいバインディングをグローバルマップの適切な位置に保存することにより機能します(Rebindingを参照してください)。

ほとんどの現代的なキーボードは、文字キーと同じようにファンクションキーをもちます。ファンクションキーは文字キーが行なうように入力イベントを送り、キーマップはファンクションキーにたいするバインディングをもつことができます。キーシーケンスにはファンクションキーと文字をミックスすることもできます。たとえば、キーボードにファンクションキーHomeがある場合、EmacsはC-x Homeのようなキーシーケンスを認識できます。S-down-mouse-1のように、マウスイベントとキーボードイベントをミックスすることさえ可能です。

テキスト端末では、ファンクションキーをタイプすることにより、文字シーケンスがコンピューターに送られます。シーケンスの正確な詳細は、ファンクションキーと端末タイプに依存します(シーケンスがESC [で始まることもしばしばあります)。Emacsが端末タイプを理解する場合、自動的にそのようなシーケンスを1つの入力イベントとして処理します。