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に変換されない。