Go to the first, previous, next, last section, table of contents.
プレフィックスキーは、"(その)プレフィックスキーで始めるキーシーケンスで何を行
なうか" を定義するキーマップを持ちます。 (例えば) ctl-x-map は、プレフィックス
キー C-x に続く文字で用いられるキーマップです。以下に示すキーマップは、キーの
検索において、グローバルキーマップを通して用いられるようになるものです。
-
ctl-x-map は、C-x に続く文字で用いられるマップ用の変数名です。
-
help-map は、C-h に続く文字で用いられます。
-
esc-map は、ESC に続く文字用のものです。タ文字は(全て)、(実際には)このマップ
で定義されます。
-
ctl-x-4-map は、C-x 4 に続く文字用のものです。
-
mode-specific-map は、C-c に続く文字用のものです。
"プレフィックスキーの定義" とは、そのプレフィックスキーに続く文字の検索に用い
るキーマップのことです。この定義は、(実際には) プレフィックスキーに続く文字用
のキーマップを関数定義として持つ Lisp シンボルになっている場合が(しばしば)あり
ます。機能的には(全く)同じですが、この方法を用いると、プレフィックスキーにその
用途を示す(ものとして)コマンド名を付けることができます。 C-x のバインディング
は、 (その関数定義が、C-x コマンドに対するキーマップであり ctl-x-map の値でも
ある) シンボル Control-X-prefix になっています。
この種のプレフィックスキー定義は、グローバルマップやローカルマップで用いられま
す。 C-c, C-x, C-h と ESC に対するプレフィックスキー定義はグローバルマップで用
いられているため、これらのプレフィックスキーは(常に)利用可能です。メジャーモー
ドは、あるキーに対しそのプレフィックスキー定義をローカルマップに入れることで、
そのキーを(ローカルに) プレフィックスとして(再)定義することができます。
(ここは書き直し!!) モードは(また)、C-x のようなグローバルプレフィックス文字の
プレフィックス定義を(その)ローカルマップに入れることができます。この方法で、メ
ジャーモードは C-x で始まるキーの定義に対し上書きを行ないます。これは通常の場
合と同じです。(通常) プレフィックスキーはローカルマップで検索されます。 (そし
て)その次の文字は、(そのローカルマップで見つけられた) プレフィックスマップで検
索されます。関数が見い出された場合、それが実行されます。キーに対するエントリー
が存在しない場合、そのプレフィックスと 2番目のキーはグローバルマップで検索され
ます (実際には、複数文字シーケンスの最初の文字は (同時に) 両方のマップで検索さ
れますが、これは上記の記述と同じ働きをします)。
あるキーが、ローカルマップではプレフィックスであるがグローバルマップではそうで
ないという(あまり) 一般的でない場合にも、同じ手順が用いられます。(訳注:この場
合) グローバルマップでプレフィックスキーと 2 番目のキーとを検索した結果が
undefined command になることは保証されています。
以下の例において、C-p はローカルキーマップにおけるプレフィックスキー (で C-x
と同じ働きをするもの) とされます。 C-p C-f に対するバインディングは (C-x C-f
に対するのと同じで) 関数 find-file です。 4 番目の例において、キーシーケンス
C-p 6 は(まず)ローカルマップで検索されます。 (訳注:そうすると) このキーバイン
ディングは未定義であることがわかります。 (ローカルマップにおける検索と並行し)
同じシーケンスがグローバルマップでも検索され、そこでも定義されていないことがわ
かります。これは 2つのキーシーケンス(C-p そして 6)としては検索されません。そう
であれば有効であるのでしょうが (ついていくには複雑すぎる!!)。
(use-local-map (make-sparse-keymap))
=> nil
(local-set-key "\C-p" ctl-x-map)
=> nil
(key-binding "\C-p\C-f")
=> find-file
(key-binding "\C-p6")
=> nil
Function: define-prefix-command symbol
この関数は、 symbol をプレフィックスコマンドとして定義します。フルキーマッ
プを作り、それを symbol の関数定義としてストアします。 symbol を返します。
(define-prefix-command symbol)
==
(let ((x symbol))
(fset x (make-keymap))
x)
Constant: meta-prefix-char
このグローバル変数は、メタ-プレフィックス文字のコードです。通常これは ESC
です。これは(キーマップで検索することができるよう) メタ-文字を 2 文字の列
に変換するのに用いられます。いくつかのキーボードでは、 ESC は使いにくいた
め、この変数で何か別のキーに変更することがありえます。
Go to the first, previous, next, last section, table of contents.