Next: Invoking the Input Method, Previous: Reading One Event, Up: Reading Input [Contents][Index]
Emacsはextra-keyboard-modifiers
に合わせて読み取ったすべてのイベントを変更してread-event
からリターンする前に、(もし適切なら)keyboard-translate-table
を通じてそれを変換します。
この変数はLispプログラムにキーボード上の修飾キーを“押下”させる。値は文字。文字の修飾子だけが対象となる。ユーザーがキーボードのキーを押下するたびに、その修飾キーがすでに押下されたかのように処理される。たとえばextra-keyboard-modifiers
を?\C-\M-a
にバインドすると、このバインディングのスコープ内にある間、すべてのキーボード入力文字はコントロール修飾とメタ修飾を適用されるだろう。文字?\C-@
は0と等価なので、この目的にたいしてはコントロール文字として勘定されないが、修飾無しの文字として扱われる。したがってextra-keyboard-modifiers
を0にセットすることによって、すべての修飾をキャンセルできる。
ウィンドウシステムを利用していれば、この方法によってプログラムが任意の修飾キーを押下できる。それ以外ではCTLとMETAのキーだけを仮想的に押下できる。
この変数は実際にキーボードに由来するイベントだけに適用され、マウスイベントやその他のイベントには効果がないことに注意。
この端末ローカルな変数はキーボード文字にたいする変換テーブルである。これによりコマンドバインディングを変更することなく、キーボード上のキーを再配置できる。値は通常は文字テーブル、またはnil
(文字列かベクターも指定できるが時代遅れとされている)。
keyboard-translate-table
が文字テーブル(Char-Tablesを参照)なら、キーボードから読み取られた各文字はその文字テーブルを調べる。非nil
の値が見つかったら実際の入力文字のかわりにそれを使用する。
この変換は文字が端末から読み取られた後、最初に発生することに注意。recent-keys
のような記録保持機能や文字を記録するdribbleファイルは、この変換の後に処理される。
さらにこの変換は入力メソッド(Input Methodsを参照)に文字を提供する前に行われることにも注意。入力メソッド処理の後に文字を変換したいならtranslation-table-for-input
(Translation of Charactersを参照)を使用すること。
この関数は文字コードfromを文字コードtoに変換するためにkeyboard-translate-table
を変更する。
必要ならキーボード変換テーブルを作成する。
以下はC-xでカット、C-でコピー、C-vでペーストを処理するようにkeyboard-translate-table
を使用する例:
(keyboard-translate ?\C-x 'control-x) (keyboard-translate ?\C-c 'control-c) (keyboard-translate ?\C-v 'control-v) (global-set-key [control-x] 'kill-region) (global-set-key [control-c] 'kill-ring-save) (global-set-key [control-v] 'yank)
拡張ASCII入力をサポートするグラフィカルな端末上では、シフトキーとともにタイプすることによって、標準的なEmacsにおける意味をこれらの文字から依然として取得することが可能です。これはキーボード変換が関与する文字とは異なりますが、それらは通常と同じ意味をもちます。
read-key-sequence
のレベルでイベントシーケンスを変換するメカニズムについては、Translation Keymapsを参照してください。