Next: Scanning Keymaps, Previous: Translation Keymaps, Up: Keymaps [Contents][Index]
このセクションでは、キーバインディングを変更するための便利な対話的インターフェイスを説明します。これらはdefine-key
を呼び出すことにより機能します。
ユーザーはinitファイルにたいしてシンプルなカスタマイズを行うとき、しばしばglobal-set-key
を使用します。たとえば、
(global-set-key (kbd "C-x C-\\") 'next-line)
または
(global-set-key [?\C-x ?\C-\\] 'next-line)
または
(global-set-key [(control ?x) (control ?\\)] 'next-line)
は、次の行に移動するようにC-x C-\を再定義します。
(global-set-key [M-mouse-1] 'mouse-set-point)
は、メタキーを押してマウスの第一ボタン(左ボタン)をクリックすると、クリックした箇所にポイントをセットするように再定義します。
バインドするキーのLisp指定に非ASCII文字のテキストを使用するときは、注意してください。マルチバイトとして読み取られたテキストがある場合には、Lispファイル内でマルチバイトテキストが読み取られるときのように(see Loading Non-ASCII)、マルチバイトとしてキーをタイプしなければなりません。たとえば、
(global-set-key "ö" 'my-function) ; bind o-umlaut
または
(global-set-key ?ö 'my-function) ; bind o-umlaut
をLatin-1のマルチバイト環境で使用した場合、これらのコマンドはLatin-1端末より送信されたバイトコード246(M-v)ではなく、コード246のマルチバイト文字に実際にバインドされます。このバインディングを使用するためには、適切な入力メソッド(Input Methods in The GNU Emacs Manualを参照)を使用して、キーボードをデコードする方法をEmacsに教える必要があります。
この関数は、カレントグローバルマップ内で、keyのバインディングをbindingにセットする。
(global-set-key key binding) ≡ (define-key (current-global-map) key binding)
この関数は、カレントグローバルマップから、keyのバインディングを削除する。
プレフィクスとしてkeyを使用する、長いキーの定義の準備に使用するのも、この関数の1つの使い方である。keyが非プレフィクスのようなバインディングをもつ場合、この使い方は許されないだろう。たとえば、
(global-unset-key "\C-l") ⇒ nil
(global-set-key "\C-l\C-l" 'redraw-display) ⇒ nil
この関数は、以下のようにdefine-key
を使用するのと等しい:
(global-unset-key key) ≡ (define-key (current-global-map) key nil)
この関数は、カレントローカルキーマップ内のkeyのバインディングを、bindingにセットする。
(local-set-key key binding) ≡ (define-key (current-local-map) key binding)
この関数は、カレントローカルキーマップから、keyのバインディングを削除する。
(local-unset-key key) ≡ (define-key (current-local-map) key nil)