Next: Quoted Character Input, Previous: Event Mod, Up: Reading Input [Contents][Index]
イベント読み取り関数は、もしあればカレント入力メソッドを呼び出します(Input Methodsを参照)。input-method-function
の値が非nil
の場合、関数を指定します。read-event
が修飾ビットのないプリント文字(SPCを含む)を読み取ったときは、その文字を引数としてその関数を呼び出します。
これが非nil
の場合、その値はカレントの入力メソッド関数を指定する。
警告:
この変数はlet
でバインドしてはならない。この変数はしばしばバッファーローカルであり、入力の前後(これは正にあなたがバインドするであろうタイミングである)でバインドした場合、Emacsが待機中に非同期にバッファーを切り替えると誤ったバッファーに値がリストアされるだろう。
入力メソッド関数は、入力として使用されるイベントのリストをリターンするべきです(このリストがnil
の場合、それは入力がないことを意味するので、read-event
他のイベントを待機する)。これらのイベントはunread-command-events
(Event Input Miscを参照)内のイベントの前に処理されます。入力メソッドによりリターンされるイベントは、たとえそれらが修飾ビットのないプリント文字であっても、再度入力メソッドに渡されることはありません。
入力メソッド関数がread-event
またはread-key-sequence
を呼び出した場合は、再帰を防ぐために最初にinput-method-function
をnil
にバインドするべきです。
キーシーケンスの2つ目および後続のイベントを読み取るときは、入力メソッド関数は呼び出されません。したがって、それらの文字は入力メソッドの処理対象ではありません。入力メソッド関数はoverriding-local-map
とoverriding-terminal-local-map
の値をテストするべきです。これらの変数のいずれかが非nil
の場合、入力メソッドは引数をリストにputして、それ以上の処理を行わずにそのリストをリターンするべきです。