Next: , Previous: Key Lookup, Up: Keymaps


21.8 キー探索関数

ここでは、キー探索に関わる関数や変数について述べます。

— 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) "\C-x\C-f12345")
              ⇒ 2

文字列やベクトルであるkeyが、 keymapで指定されたプレフィックスキーに対して正しいキー列でなければ、 keyは『長すぎる』のであって、 1つのキー列に収まらない余分なイベントが末尾にある。 その場合、戻り値は数であり、 完全なキーを構成するkeyの先頭からのイベント数を表す。

accept-defaultsnil以外であると、 lookup-keyは、keyの特定のイベントに 対するバインディングだけでなく、 デフォルトのバインディングも考慮する。 さもなければ、lookup-keyは、 keyの特定のイベントに対するバインディングだけを報告し、 特に指定しない限りデフォルトのバインディングは無視する。 (それには、keyの要素としてtを与える。 Format of Keymapsを参照。)

keyにメタ文字が含まれる場合、 当該文字は暗黙のうちに2文字の列、 つまり、meta-prefix-charの値と対応する非メタ文字 に置き換えられる。 したがって、つぎの最初の例は、2番目の例に変換して処理される。

          (lookup-key (current-global-map) "\M-f")
              ⇒ forward-word
          (lookup-key (current-global-map) "\ef")
              ⇒ forward-word

read-key-sequenceと異なり、 この関数は、情報を欠落するようには指定されたイベントを修正しない (see Key Sequence Input)。 特に、文字を小文字に変換したり、 ドラッグイベントをクリックイベントに変換したりはしない。

— コマンド: undefined

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

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

この関数は、すべての活性なキーマップを試して keyに対するバインディングを返す。 キーマップでkeyが未定義であると結果はnil

引数accept-defaultsは、lookup-key(上記)と同様に、 デフォルトのバインディングを調べるかどうか制御する。

keyが文字列でもベクトルでもないとエラーを通知する。

          (key-binding "\C-x\C-f")
              ⇒ find-file
— 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)を要素とする 連想リストを返す。 ここで、modenameはマイナモードをオンにする変数であり、 bindingは当該モードにおけるkeyのバインディングである。 keyにマイナモードでのバインディングがなければ、 値はnilである。

最初にみつかったバインディングがプレフィックスの定義 (キーマップかキーマップとしてのシンボル)でなければ、 残りのマイナモードからのバインディングは完全に隠されてしまうので それらは省略する。 同様に、プレフィックスバインディングに 続く非プレフィックスバインディングも省略する。

引数accept-defaultsは、lookup-key(上記)と同様に、 デフォルトのバインディングを調べるかどうか制御する。

— Variable: meta-prefix-char

この変数は、メタプレフィックス文字の文字コードである。 メタ文字をキーマップで探索するために2文字列に変換するときに使われる。 結果が有用であるためには、 この値はプレフィックスイベント(see Prefix Keys)であるべきである。 デフォルト値は27、<ESC>のASCIIコードである。

meta-prefix-charの値が27である限り、 キー探索ではM-b<ESC> bに変換し、 通常、これはコマンドbackward-wordと定義されている。 しかし、meta-prefix-charC-xのコードである24を設定すると、 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                         ; デフォルト値に戻す!