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
が文字テーブル(文字テーブルを参照)なら、キーボードから読み取られた各文字はその文字テーブルを調べる。非nil
の値が見つかったら実際の入力文字のかわりにそれを使用する。
この変換は文字が端末から読み取られた後、最初に発生することに注意。recent-keys
のような記録保持機能や文字を記録するdribbleファイルは、この変換の後に処理される。
さらにこの変換は入力メソッド(入力メソッドを参照)に文字を提供する前に行われることにも注意。入力メソッド処理の後に文字を変換したいならtranslation-table-for-input
(文字の変換を参照)を使用すること。
この関数は文字コードfromを文字コードtoに変換するためにkeyboard-translate-table
を変更する。
必要ならキーボード変換テーブルを作成する。fromとtoはいずれもkey-valid-p
を指定する文字列であること(キーシーケンスを参照)。toがnil
なら、この関数はfromにたいする既存の変換すべてを削除する。
以下はC-xでカット、C-でコピー、C-vでペーストを処理するようにkeyboard-translate-table
を使用する例:
(key-translate "C-x" "<control-x>") (key-translate "C-c" "<control-c>") (key-translate "C-v" "<control-v>") (keymap-global-set "<control-x>" 'kill-region) (keymap-global-set "<control-c>" 'kill-ring-save) (keymap-global-set "<control-v>" 'yank)
拡張ASCII入力をサポートするグラフィカルな端末上では、シフトキーとともにタイプすることによって、標準的なEmacsにおける意味をこれらの文字から依然として取得することが可能です。これはキーボード変換が関与する文字とは異なりますが、それらは通常と同じ意味をもちます。
read-key-sequence
レベルでイベントシーケンスを変換するメカニズムについてはイベントシーケンス変換のためのキーマップを参照してください。文字以外の入力イベント(characterp
がnil
をリターンするような入力イベント)の変換が必要な場合には、ここで説明したイベント変換メカニズムを使用しなければなりません。