Next: , Previous: Init Rebinding, Up: Key Bindings


28.4.7 ファンクションキーの再定義

キー列には通常の文字以外にもファンクションキーを含めることができます。 キーボードの文字がLispの文字(実は整数です)で表されるのに対し、 ファンクションキーはLispシンボルで表されます。 ファンクションキーに単語のラベルが付いているなら、 その単語が対応するLispシンボルの名前になります。 たとえば普通に見られるファンクションキーとLispシンボルの対応はつぎのとおりです。

left, up, right, down
カーソル矢印キー。
begin, end, home, next, prior
その他のカーソル移動キー。
select, print, execute, backtab
insert, undo, redo, clearline
insertline, deleteline, insertchar, deletechar
その他のファンクションキー。
f1, f2, ... f35
(キーボードの上端に並んでいる)番号の付いたファンクションキー。
kp-add, kp-subtract, kp-multiply, kp-divide
kp-backtab, kp-space, kp-tab, kp-enter
kp-separator, kp-decimal, kp-equal
(普通のキーボードの右側にまとまっている)キーパッドのキーで、 名前や句読点が印字されているもの。
kp-0, kp-1, ... kp-9
キーパッドの数字キー
kp-f1, kp-f2, kp-f3, kp-f4
キーパッドのPFキー。

これらの名前は習慣的なものですが、システムによっては (とりわけXウィンドウシステムを使っている場合は)、 別の名前になっている場合があります。 あるファンクションキーにどのシンボルが対応しているか調べるには、 C-h cに続いてそのキーを打鍵してください。

ファンクションキーのシンボルを含むキー列(あるいは、 ASCII以外の文字を含むもの)は文字列ではなくベクタで指定してください。 ベクタの構文では要素と要素のあいだは空白で区切り、 全体を中括弧‘[...]’で囲みます。 たとえば、ファンクションキー‘f1’をコマンドrmailにバインドするには、 つぎのようにします。

     (global-set-key [f1] 'rmail)

右矢印キーをコマンドfowared-charにバインドするには、 つぎのようにします。

     (global-set-key [right] 'forward-char)

これは、シンボルrightを要素とするベクタのLisp構文です。 (このバインディングはEmacsのデフォルト設定に入っている。)

ベクタを用いたキーの再定義ついてより詳しくは、See Init Rebinding

キー列の中でファンクションキーと文字を混ぜることができます。 以下の例は、 C-x <NEXT>をコマンドforward-pageにバインドしています。

     (global-set-key [?\C-x next] 'forward-page)

ここで、?\C-xはLispの文字定数で、文字C-xを表します。 ベクタのもう1つの要素であるnextは、シンボルですから‘?’は不要です。

ファンクションキーに対して、修飾キー<CTRL>、<META>、<HYPER>、 <SUPER>、<ALT>、<SHIFT>を指定できます。 これらの修飾キーを指定するには、シンボル名のまえに‘C-’、 ‘M-’、‘H-’、‘s-’、‘A-’、‘S-’を付けてください。 たとえば、Hyper-Meta-<RIGHT>で 1語先へ移動するにはつぎのように指定します。

     (global-set-key [H-M-right] 'forward-word)