Next: , Previous: , Up: Reading Input   [Contents][Index]


20.8.4 Invoking the Input Method

イベント読み取り関数は、もしあればカレント入力メソッドを呼び出します(Input Methodsを参照)。input-method-functionの値が非nilの場合、関数を指定します。read-eventが修飾ビットのないプリント文字(SPCを含む)を読み取ったときは、その文字を引数としてその関数を呼び出します。

Variable: input-method-function

これが非nilの場合、その値はカレントの入力メソッド関数を指定する。

警告: この変数はletでバインドしてはならない。この変数はしばしばバッファーローカルであり、入力の前後(これは正にあなたがバインドするであろうタイミングである)でバインドした場合、Emacsが待機中に非同期にバッファーを切り替えると誤ったバッファーに値がリストアされるだろう。

入力メソッド関数は、入力として使用されるイベントのリストをリターンするべきです(このリストがnilの場合、それは入力がないことを意味するので、read-event他のイベントを待機する)。これらのイベントはunread-command-events(Event Input Miscを参照)内のイベントの前に処理されます。入力メソッドによりリターンされるイベントは、たとえそれらが修飾ビットのないプリント文字であっても、再度入力メソッドに渡されることはありません。

入力メソッド関数がread-eventまたはread-key-sequenceを呼び出した場合は、再帰を防ぐために最初にinput-method-functionnilにバインドするべきです。

キーシーケンスの2つ目および後続のイベントを読み取るときは、入力メソッド関数は呼び出されません。したがって、それらの文字は入力メソッドの処理対象ではありません。入力メソッド関数はoverriding-local-mapoverriding-terminal-local-mapの値をテストするべきです。これらの変数のいずれかが非nilの場合、入力メソッドは引数をリストにputして、それ以上の処理を行わずにそのリストをリターンするべきです。