Go to the first, previous, next, last section, table of contents.

キーマップ

キーボード入力とコマンド関数とのバインディングはキーマップと呼ばれるデータ構造 に記録されます。 2種類の primary キーマップが(常に)存在します。 (全ての)バッ ファで利用できるグローバルキーマップと、(通常)あるメジャーモードに対応付けられ る (カレントな)ローカルキーマップです。

キーマップは、2 種類の Lisp オブジェクト(ベクトルもしくはリスト) のいずれかで 表現されます。フルキーマップは長さ 128 の配列です。このキーマップでは、ある文 字に対するバインディングは、この配列からその文字を添字として (要素をアクセスす ることで) 得られます。キーマップは(また)、car がシンボル keymap で、残りの(諸) 要素が (文字 . バインディング) というフォームの pair であるリストであることも あります。このリストは (フルキーマップでは、ほとんどの文字のエントリーが nil になってしまう場合に用いるもので) スパースキーマップと呼ばれます。エントリーが 少ないと考えられる場合、スパースキーマップが用いられます。 (define-key が必要 とする場合、スパースキーマップは中間的な (訳注:intermediate) キーマップとして 作られます)

キーマップは長さが 128 しかないため、 (128 から 255 のコードである) メタ文字は どのように扱われるのでしょうか? メタ文字を含むキーは(通常)、 (最初の文字が ESC である) 2 文字のシーケンスとして表わされます。 M-a は(実際には) ESC a で表 わされ、このバインディングは esc-map の `a' のスロットに見い出されます。

Function: keymapp object

この関数は、 object がキーマップの場合 t を返し、そうでない場合 nil を返し ます。キーマップは長さ128 のベクトルか、リスト (keymap . alist ) です。

  (keymapp '(keymap))
  => t
  (keymapp (current-grobal-map))
  => t

Function: make-keymap

この関数は、その(全ての)エントリーが ("キーマップ中でコマンドが未定義であ る" ことを示す) nil であるフルキーマップ (i.e., 長さ 128 のベクトル) を(新 しく)作り、それを返します。

  (make-keymap)
  => [nil nil nil ... nil nil]

Function: make-sparse-keymap

この関数は、エントリーを持たないスパースキーマップを新しく作り、それを返し ます。

  (make-sparse-keymap)
  => (keymap)


Go to the first, previous, next, last section, table of contents.