Next: Searching Keymaps, Previous: Prefix Keys, Up: Keymaps [Contents][Index]
Emacsには多くのキーマップを含まれていますが、常にいくつかのキーマップだけがアクティブです。Emacsがユーザー入力を受け取ったとき、それは入力イベントに変換されて(Translation Keymapsを参照)、アクティブなキーマップ内でキーバインディングがルックアップされます。
アクティブなキーマップは通常は、(1) keymap
プロパティにより指定されるキーマップ、(2) 有効なマイナーモードのキーマップ、(3)
カレントバッファーのローカルキーマップ、(4)
グローバルキーマップの順です。Emacsは入力キーシーケンスそれぞれにたいして、これらすべてのキーマップ内を検索します。
これらの通常のキーマップのうち最優先されるのは、もしあればポイント位置のkeymap
テキストにより指定されるキーマップかoverallプロパティです(マウス入力イベントにたいしてはEmacsはポイント位置のかわりにイベント位置を使用する。
Searching Keymapsを参照されたい)。
次に優先されるのは有効なマイナーモードにより指定されるキーマップです。もしあればこれらのキーマップは変数emulation-mode-map-alists
、minor-mode-overriding-map-alist
、minor-mode-map-alist
により指定されます。Controlling Active Mapsを参照してください。
次に優先されるのはバッファーのローカルキーマップ(local
keymap)で、これにはそのバッファー特有なキーバインディングが含まれます。ミニバッファーもローカルキーマップをもちます(Intro to Minibuffersを参照)。ポイント位置にlocal-map
テキスト、またはoverlayプロパティがあるなら、それはバッファーのデフォルトローカルキーマップのかわりに使用するローカルキーマップを指定します。
ローカルキーマップは通常はそのバッファーのメジャーモードによってセットされます。同じメジャーモードをもつすべてのバッファーは、同じローカルキーマップを共有します。したがってあるバッファーでローカルキーマップを変更するためにlocal-set-key
(Key Binding Commandsを参照)を呼び出すと、それは同じメジャーモードをもつ他のバッファーのローカルキーマップにも影響を与えます。
最後はC-fのようなカレントバッファーとは関係なく定義されるキーバインディングを含んだグローバルキーマップ(global
keymap)です。このキーマップは常にアクティブであり変数global-map
にバインドされています。
これら通常のキーマップとは別に、Emacsはプログラムが他のキーマップをアクティブにするための特別な手段を提供します。1つ目はグローバルキーマップ以外の通常アクティブなキーマップを置き換えるキーマップを指定する変数overriding-local-map
です。2つ目は他のすべてのキーマップより優先されるキーマップを指定する端末ローカル変数overriding-terminal-local-map
です。この端末ローカル変数は通常はmodal(訳注:
他のキーマップを選択できない状態)かつ一時的なキーバインディングに使用されます(ここの変数にたいして関数set-transient-map
は便利なインターフェイスを提供する)。詳細はControlling Active Mapsを参照してください。
これらを使用するのがキーマップをアクティブにする唯一の方法ではありません。キーマップはread-key-sequence
によるイベントの変換のような他の用途にも使用されます。Translation Keymapsを参照してください。
いくつかの標準的なキーマップのリストはStandard Keymapsを参照してください。
これはカレント状況下でコマンドループによりキーシーケンスをルックアップするために使用される、アクティブなキーマップのリストをリターンする。これは通常はoverriding-local-map
とoverriding-terminal-local-map
を無視するが、olpが非nil
なら、それらのキーマップにも注意を払う。オプションでpositionにevent-start
によってリターンされるイベント位置、またはバッファー位置を指定でき、key-binding
で説明されているようにキーマップを変更するかもしれない。
この関数はカレントのアクティブキーマップでkeyにたいするバインディングをリターンする。そのキーマップ内でkeyが未定義なら結果はnil
。
引数accept-defaultsはlookup-key
(Functions for Key Lookupを参照)のようにデフォルトバインディングをチェックするかどうかを制御する。
コマンドがリマップ(remap: 再マップ。Remapping Commandsを参照)されたとき、key-binding
が実際に実行されるであろうリマップされたコマンドをリターンするように、通常のようにコマンドのリマップを行う。しかしno-remapが非nil
なら、key-binding
はリマップを無視してkeyにたいして直接指定されたバインディングをリターンする。
keyがマウスイベント(もしかしたらプレフィクスイベントが先行するかもしれない)で始まるなら、照合されるマップはそのイベントの位置を元に決定される。それ以外では、それらのマップはポイント値にもとづき決定される。しかしpositionを指定することによってこれらをオーバーライドできる。positionが非nil
なら、それはバッファー位置かevent-start
の値のようなイベント位置のいずれかである。その場合には照合されるマップはpositionにもとづいて決定される。
keyが文字列とベクターのいずれでもなければEmacsはエラーをシグナルする。
(key-binding "\C-x\C-f") ⇒ find-file