Next: Event Mod, Previous: Key Sequence Input, Up: Reading Input [Contents][Index]
read-event
、read-char
、read-char-exclusive
はコマンド入力にたいするもっとも低レベルの関数です。
この関数はコマンド入力の次のイベントを読み取ってリターンする。必要ならイベントが利用可能になるまで待機する。
リターンされるイベントはユーザーからの直接のイベントかもしれないし、キーボードマクロからのイベントかもしれない。イベントはキーボードの入力コーディングシステム(Terminal I/O Encodingを参照)によりデコードされていない。
オプション引数promptが非nil
なら、それはエコーエリアにプロンプトとして表示される文字列である。nil
ならread-event
は入力待ちを示すメッセージを何も表示せず、エコーを行うことによってプロンプトの代用とする。エコーに表示される記述はカレントコマンドに至ったイベントや読み取られたイベント。The Echo Areaを参照のこと。
inherit-input-methodが非nil
なら、(もしあれば)非ASCII文字の入力を可能にするためにカレントの入力メソッドが採用される。それ以外では、このイベントの読み取りにたいして入力メソッドの処理が無効になる。
cursor-in-echo-area
が非nil
の場合、read-event
はカーソルを一時的にエコーエリアの、そこに表示されているメッセージの終端に移動する。それ以外では、read-event
はカーソルを移動しない。
secondsが非nil
なら、それは入力を待つ最大秒数を指定する数値である。その時間内に入力が何も到着しなければ、read-event
は待機を終えてnil
をリターンする。浮動小数点数secondsは待機する秒の分数を意味する。いくつかのシステムではサポートされるのは整数の秒数だけであり、そのようなシステムではsecondsは切り捨てられる。secondsがnil
なら、read-event
は入力が到着するのに必要なだけ待機する。
secondsがnil
ならユーザー入力が到着するのを待つ間、Emacsはアイドル状態にあるとみなされる。この期間中にアイドルタイマー
— run-with-idle-timer
(Idle Timersを参照) —
を実行できる。しかしsecondsが非nil
なら、非アイドル状態は変更されずに残る。read-event
が呼び出されたときEmacsが非アイドルだったら、read-event
の処理を通じて非アイドルのままとなる。Emacsがアイドルだった場合(これはアイドルタイマー内部からその呼び出しが行われた場合に起こり得る)は、アイドルのままとまる。
read-event
がヘルプ文字として定義されたイベントを取得すると、ある状況においてはread-event
がリターンせずに直接イベントを処理することがある。Help Functionsを参照のこと。その他のスペシャルイベント(special events)(Special Eventsを参照)と呼ばれる特定のイベントもread-event
で直接処理される。
以下はread-event
を呼び出してから右矢印キーを押下したとき何が起こるかの例:
(read-event) ⇒ right
この関数はコマンド入力の文字を読み取ってそれをリターンする。ユーザーが文字以外(たとえばマウスクリックやファンクションキー)のイベントを生成すると、read-char
はエラーをシグナルする。引数はread-event
と同じように機能する。
1つ目の例ではユーザーは文字1(ASCIIコード49)をタイプしている。2つ目の例ではeval-expression
を使用してミニバッファーからread-char
を呼び出すキーボード定義を示している。read-char
はキーボードマクロの直後の文字1を読み取る。その後でeval-expression
はリターン値をエコーエリアに表示する。
(read-char) ⇒ 49
;; M-:を使用して以下を評価するものとする
(symbol-function 'foo)
⇒ "^[:(read-char)^M1"
(execute-kbd-macro 'foo) -| 49 ⇒ nil
この関数はコマンド入力の文字を読み取ってそれをリターンする。ユーザーが文字以外のイベントを生成すると、read-char-exclusive
はそれを無視して文字を取得するまで他のイベントを読み取る。引数はread-event
と同じように機能する。
上記の関数でquitを抑制するものはありません。
この変数は端末から受信した入力イベント(キーボードマクロにより生成されたイベントは勘定しない)の総数を保持する。
read-key-sequence
と異なり関数read-event
、read-char
、read-char-exclusive
はTranslation Keymapsで説明した変換を行わないことを強調しておきます。単一キー読み取りでこれらの変換を行いたければ関数read-key
を使用してください。
この関数は1つのキーを読み取る。これはread-key-sequence
とread-event
の間の“中間的”な関数である。read-key-sequence
と異なるのは、キーシーケンスではなく単一キーを読み取ることである。read-event
と異なるのは、rawイベントをリターンせずにinput-decode-map
、local-function-key-map
、key-translation-map
(Translation Keymapsを参照)に合わせて復号と変換を行うことである。
引数promptはプロンプトとしてエコーエリアに表示する文字列で、nil
はプロンプトを表示しないことを意味する。
この関数は1つの文字を読み取ってリターンするためにread-key
を使用する。これはchars(許容される文字のリスト)のメンバー以外の入力を無視する。オプションで有効な入力を待つ間のquitイベントも無視する。read-char-choice
呼び出しの間にhelp-form
(Help Functionsを参照)を非nil
値にバインドすると、help-char
の押下によりhelp-form
が評価され結果が表示される。その後で有効な入力文字、またはキーボードquitの待機を継続する。