Emacsは、読み取ったすべてのイベントをextra-keyboard-modifiersに従って変更し、次にkeyboard-translate-table(該当する場合)を介して変換した上で、read-eventから返します。
この変数により、Lispプログラムはキーボードの修飾キーを「押す」ことができます。値は文字です。その文字の修飾キーのみが考慮されます。ユーザーがキーボードキーを入力するたびに、あたかもそれらの修飾キーが押し下げられているかのように値が変更されます。例えば、extra-keyboard-modifiers を ?\C-\M-a
にバインドした場合、そのバインドのスコープ内で入力されるすべてのキーボード文字に、control および meta 修飾キーが適用されます。整数 0
に相当する文字 ?\C-@ は、この目的においては control
文字とはみなされず、修飾キーを持たない文字として扱われます。したがって、extra-keyboard-modifiers を 0 に設定すると、あらゆる修飾が解除されます。
ウィンドウシステムを使用している場合、プログラムはこの方法で任意の修飾キーを押すことができます。それ以外の場合は、CTL および META キーのみを仮想的に押すことができます。
なお、この変数は実際にキーボードから発生したイベントにのみ適用され、マウスイベントやその他のイベントには影響しません。
この端末ローカル変数は、キーボード文字の変換テーブルです。これにより、コマンドバインディングを変更することなく、キーボードのキー配置を入れ替えることができます。その値は通常、char-table
または nil です。(文字列やベクトルである場合もありますが、これらは非推奨とされています。)
keyboard-translate-table が文字テーブル(文字テーブルを参照)である場合、キーボードから読み込まれた各文字はこの文字テーブルで検索されます。そこで見つかった値が
nil 以外であれば、実際の入力文字の代わりにその値が使用されます。
なお、この変換は、ターミナルから文字が読み込まれた後に最初に行われる処理であることに注意してください。recent-keys やドリブファイルなどの記録機能は、変換後の文字を記録します。
また、この翻訳は文字が入力メソッドに提供される前に行われる点にご注意ください(入力メソッドを参照)。入力メソッドが動作した後に文字を翻訳したい場合は、translation-table-for-input を使用してください(文字の翻訳を参照)。
このコマンドは、文字コード from を文字コード to
に変換するため、keyboard-translate-table
を変更します。対話モードでは、from と to
の入力を求めます。必要に応じて、キーボード変換テーブルを作成します。from と to はともに key-valid-p
を満たす文字列である必要があります(キーシーケンス
を参照)。to が nil の場合、この関数は
from に対する既存の変換をすべて削除します。
keyboard-translate-table を使用して C-x、C-c、C-v
に切り取り、コピー、貼り付け操作を行わせる例を以下に示します。
(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入力に対応したグラフィカル端末では、Shiftキーを押しながら入力することで、それらの文字のうちの1つにEmacs標準の意味を持たせることができます。これにより、キーボード変換上は別の文字になりますが、通常の意味は同じです。
read-key-sequenceレベルでイベントシーケンスを変換する仕組みについては、イベントシーケンス変換用のキーマップを参照してください。文字ではない入力イベント(すなわち、characterp が nil
を返すもの)を変換する必要がある場合は、そこで説明されているイベント変換メカニズムを使用する必要があります。
このコマンドは、キー from とその訳語の入力を求め、訳語テーブルからその訳語を削除します。Lisp から呼び出す際は、訳語を指定せず、キー from のみを指定してください。