Next: , Previous: , Up: Keymaps   [Contents][Index]


21.11 Functions for Key Lookup

以下は、キールックアップに関連する関数および変数です。

Function: lookup-key keymap key &optional accept-defaults

この関数は、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-keykey内の特定のイベントにたいするバインディングと同様に、デフォルトバインディングも考慮する。それ以外では、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を参照)を行わない。特に、この関数はアルファベット文字を小文字に変更せず、ドラッグイベントをクリックイベントに変更しない。

Command: undefined

キーを未定義にするために、キーマップ内で使用される。これはdingを呼び出すが、エラーを起こさない。

Function: local-key-binding key &optional accept-defaults

この関数は、カレントのローカルキーマップ内の、keyにたいするバインディングをリターンする。カレントのローカルキーマップ内で未定義の場合は、nilをリターンする。

引数accept-defaultsは、lookup-key(上記)と同じように、デフォルトバインディングのチェックを制御する。

Function: global-key-binding key &optional accept-defaults

この関数は、カレントのグローバルキーマップ内で、コマンドkeyにたいするバインディングをリターンする。カレントのグローバルキーマップ内で未定義の場合は、nilをリターンする。

引数accept-defaultsは、lookup-key(上記)と同じように、デフォルトバインディングのチェックを制御する。

Function: minor-mode-key-binding key &optional accept-defaults

この関数は、アクティブなマイナーモードのkeyのバインディングを、リストでリターンする。より正確には、この関数は(modename . binding)のとうなペアーのalistをリターンする。ここでmodenameなそのマイナーモードを有効にする変数、bindingはそのモードでのkeyのバインディングである。keyがマイナーモードバインディングをみたない場合、値はnilである。

最初に見つかったバインディングがプレフィクス定義(キーマップ、またはキーマップとして定義されたシンボル)でない場合は、他のマイナーモード由来のすべての後続するバインディングは、完全にshadowされるため省略される。同様に、このリストはプレフィクスバインディングに後続する非プレフィクスバインディングは省略される。

引数accept-defaultsは、lookup-key(上記)と同じように、デフォルトバインディングのチェックを制御する。

User Option: meta-prefix-char

この変数はメタ/プレフィクス文字コードである。これはメタ文字をキーマップ内でルックアップできるように、2文字シーケンスに変換する。有用な結果を得るために、値はプレフィクスイベント(Prefix Keysを参照)であること。デフォルト値は27で、これはESCにたいするASCIIコードである。

meta-prefix-charの値が27であるような限り、キールックアップは通常backward-wordコマンドとして定義されるM-bを、ESC bに変換する。しかし、meta-prefix-charを24(C-xのコード)にセットした場合、EmacsはM-bC-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-F1ESC F1に変換されない。