Next: プレフィクスキーマップ, Up: キーバインディングのカスタマイズ [Contents][Index]
キーとコマンドで説明されているように、各Emacsコマンドは、対話的に使用することを条件として定義されたLisp関数です。すべてのLisp関数と同様に、コマンドは小文字とハイフンからなる関数名をもちます。
キーシーケンス(key sequence) — 短くはキー(key) — とは、1つの単位として意味をもつ、連続する入力イベント(input events)のことです。入力イベントとは文字、ファンクションキー、マウスボタン — つまりコンピューターに送ることができるすべての入力のことです。キーシーケンスは、それが何のコマンドを実行するかを指示するバインディング(binding)により、意味をもちます。
キーシーケンスとコマンド関数との間のバインディングは、keymaps(キーマップ)と呼ばれるデータ構造に記録されます。Emacsには多くのkeymapsがあり、それぞれが特別の機会に使用されます。
一番重要なキーマップは、グローバルキーマップ(global keymap)です。なぜならグローバルキーマップは常に効果があるからです。グローバルキーマップはFundamentalモードにたいしてキーを定義します(メジャーモードを参照してください)。これらの定義のほとんどは、、ほとんどすべてのメジャーモードでは一般的です。メジャーモードまたはマイナーモードは、いくつかのキーにたいするグローバル定義をオーバーライドするために、それぞれ独自のkeymapをもつことができます。
たとえばgのような自己挿入文字(self-inserting character)は、グローバルキーマップがそれをコマンドcommand
self-insert-command
にバインドするので、自己挿入を行なうのです。C-aのような標準的なEmacsの編集文字もグローバルキーマップから、それらの標準的な意味を取得します。M-x
keymap-global-setのようなキーをリバインドするコマンドは、新しいバインディングをグローバルマップの適切な位置に保存することにより機能します(対話的なキーバインディングの変更を参照)。カレントのキーバインディングを閲覧するにはC-h
bコマンドを使用してください。
ほとんどの現代的なキーボードは、文字キーと同じようにファンクションキーをもちます。ファンクションキーは文字キーが行なうように入力イベントを送り、キーマップはファンクションキーにたいするバインディングをもつことができます。キーシーケンスにはファンクションキーと文字をミックスすることもできます。たとえば、キーボードにファンクションキーHomeがある場合、EmacsはC-x Homeのようなキーシーケンスを認識できます。S-down-mouse-1のように、マウスイベントとキーボードイベントをミックスすることさえ可能です。
テキスト端末では、ファンクションキーをタイプすることにより、文字シーケンスがコンピューターに送られます。シーケンスの正確な詳細は、ファンクションキーと端末タイプに依存します(シーケンスがESC [で始まることもしばしばあります)。Emacsが端末タイプを理解する場合、自動的にそのようなシーケンスを1つの入力イベントとして処理します。
後続に1文字(ASCIIと非ASCIIの大文字小文字)を伴うC-cから構成されるキーシーケンスはユーザー用に予約済みです。これらのキーシーケンスをEmacs自身がバインドすることは決してなく、Emacs拡張はこれらのキーシーケンスのバインディングを避ける必要があります。言い換えると、ユーザーはC-c aやC-c çのようなキーシーケンスをバインドでき、それはEmacsのバインディングによりバインディングがシャドーされることは決してないということに基づいています。