Next: Changing Key Bindings, Previous: Key Lookup, Up: Keymaps [Contents][Index]
以下は、キールックアップに関連する関数および変数です。
この関数は、keymap内のkeyの定義をリターンする。このチャプターで説明されている、キーをルックアップする他のすべての関数がlookup-key
を使用する。以下は例である:
(lookup-key (current-global-map) "\C-x\C-f") ⇒ find-file
(lookup-key (current-global-map) (kbd "C-x C-f")) ⇒ find-file
(lookup-key (current-global-map) "\C-x\C-f12345") ⇒ 2
文字列、またはベクターのkeyが、keymap内で指定されるプレフィクスキーとして有効なキーシーケンスでない場合、それは最後に余計なイベントをもつ、単一のキーシーケンスに適合しない、“長過ぎる”キーのはずである。その場合のリターン値は数となり、この数はコンプリートキーを構成するkeyの前にあるイベントの数である。
accept-defaultsが非nil
の場合、lookup-key
はkey内の特定のイベントにたいするバインディングと同様に、デフォルトバインディングも考慮する。それ以外では、lookup-key
は特定のkeyのシーケンスにたいするバインディングだけを報告し、明示的に指定したとき以外はデフォルトバインディングを無視する。(これを行うには、keyの要素としてt
を与える。Format of Keymapsを参照のこと。)
keyがメタ文字(ファンクションキーではない)を含む場合その文字は暗黙にmeta-prefix-char
の値と対応する非メタ文字からなる、2文字シーケンスに置き換えられる。したがって、以下に1つ目の例は、2つ目の例に変換されて処理される。
(lookup-key (current-global-map) "\M-f") ⇒ forward-word
(lookup-key (current-global-map) "\ef") ⇒ forward-word
read-key-sequence
とは異なり、この関数は指定されたイベントの情報を破棄する変更(Key Sequence Inputを参照)を行わない。特に、この関数はアルファベット文字を小文字に変更せず、ドラッグイベントをクリックイベントに変更しない。
キーを未定義にするために、キーマップ内で使用される。これはding
を呼び出すが、エラーを起こさない。
この関数は、カレントのローカルキーマップ内の、keyにたいするバインディングをリターンする。カレントのローカルキーマップ内で未定義の場合は、nil
をリターンする。
引数accept-defaultsは、lookup-key
(上記)と同じように、デフォルトバインディングのチェックを制御する。
この関数は、カレントのグローバルキーマップ内で、コマンドkeyにたいするバインディングをリターンする。カレントのグローバルキーマップ内で未定義の場合は、nil
をリターンする。
引数accept-defaultsは、lookup-key
(上記)と同じように、デフォルトバインディングのチェックを制御する。
この関数は、アクティブなマイナーモードのkeyのバインディングを、リストでリターンする。より正確には、この関数は(modename
.
binding)
のとうなペアーのalistをリターンする。ここでmodenameなそのマイナーモードを有効にする変数、bindingはそのモードでのkeyのバインディングである。keyがマイナーモードバインディングをみたない場合、値はnil
である。
最初に見つかったバインディングがプレフィクス定義(キーマップ、またはキーマップとして定義されたシンボル)でない場合は、他のマイナーモード由来のすべての後続するバインディングは、完全にshadowされるため省略される。同様に、このリストはプレフィクスバインディングに後続する非プレフィクスバインディングは省略される。
引数accept-defaultsは、lookup-key
(上記)と同じように、デフォルトバインディングのチェックを制御する。
この変数はメタ/プレフィクス文字コードである。これはメタ文字をキーマップ内でルックアップできるように、2文字シーケンスに変換する。有用な結果を得るために、値はプレフィクスイベント(Prefix Keysを参照)であること。デフォルト値は27で、これはESCにたいするASCIIコードである。
meta-prefix-char
の値が27であるような限り、キールックアップは通常backward-word
コマンドとして定義されるM-bを、ESC
bに変換する。しかし、meta-prefix-char
を24(C-xのコード)にセットした場合、EmacsはM-bをC-x
bに変換するだろうが、これの標準のバインディングはswitch-to-buffer
コマンドである。以下に何が起こるかを示す(実際にこれを行ってはならない!):
meta-prefix-char ; デフォルト値
⇒ 27
(key-binding "\M-b") ⇒ backward-word
?\C-x ; 文字.の ⇒ 24 ; プリント表現
(setq meta-prefix-char 24) ⇒ 24
(key-binding "\M-b") ⇒ switch-to-buffer ; 今やM-bをタイプすると ; C-x bをタイプしたようになる (setq meta-prefix-char 27) ; 混乱を避ける! ⇒ 27 ; デフォルト値をリストア!
この単一イベントから2イベントへの変換は文字にたいしてのみ発生し、他の種類の入力イベントには発生しない。したがって、ファンクションキーM-F1はESC F1に変換されない。