Function: read-char
この関数は、コマンド入力 (キーボードからの直接の入力か、キーボードマクロの 実行による文字) から 1文字読み込み、それを返します。カーサを動かしたり、プ ロンプトを出したり、文字の読み込み待ちであることを示したりはしません。
最初の例では、ユーザーは 1(ASCII 49) をタイプしています。 2 番目の例は、ミ ニバッファで read-char を呼び出すキーボードマクロを示しています。このキー ボードマクロのすぐ後の文字は digit の 1 で、これは read-char で読み込まれ ます。
(read-char) => 49
(symbol-function 'foo) => "^[^[(read-char)^M1" (call-last-kbd-macro) -> 49 => nil
Function: read-quoted-char &optional prompt
この関数は、最初に読み込まれた文字が 8進 digit である場合、(それに加え) 8 進 digit 以外のものが見つかるまで 8進 digit (0-7)を最大 2文字読み込み、こ の digit から構成される 8進数で表わされる文字を返す点を除いて、read-char に類似しています。
prompt が与えられた場合、これはユーザーに対するプロンプトとして用いられる ストリングを示します。プロンプトストリングは常にエコーエリアに表示され、 が 1つ後ろに続けられます。
次の例において、ユーザーは 8進数 177 をタイプしています。これは 10進では 127 です。
(read-quoted-char "What character") => 127
---------- Buffer: Echo Area ---------- What character- ---------- Buffer: Echo Area ----------
Function: read-key-sequence prompt
この関数は、キーシーケンスを読み込み、それをストリングとして返します。カレ ントなローカルキーマップかグローバルキーマップから起動されるプレフィックス を持たない(訳注:non-prefix)コマンドを示すのに十分なだけのシーケンス分の文 字を読み込みます。
(この関数による)読み込み中に C-g をタイプすると、他の文字と同じように扱わ れ、quit-flag は設定されません。
prompt は、(エコーエリアに)プロンプトとして表示するストリングか nil で、 nil の場合プロンプトは表示しません。
次の例では、プロンプト ? をエコーエリアに表示し、ユーザーは C-x C-f とタイ プしています。
(read-key-sequence "?") => "^X^F"
---------- Buffer: Echo Area ---------- ?
---------- Buffer: Echo Area ----------
Variable: unread-command-char
このグローバル変数には、コマンド入力ストリームから次の入力文字として読み込 まれる文字か、 (そのような文字が存在しない場合) -1 が設定されます。基本的 にこれは (入力関数がその入力のパージングを終了するため、余分に文字を読み込 んだ時) "unread" した文字になります。
(例へば)プレフィックスアーギュメントを扱う関数は、個数の指定されてない digit を読み込みますが、次のコマンドに対する入力にしなくてはいけないため、 読み込んだ最初の digit でない文字を unread しなくてはいけません。
Function: this-command-keys
この関数は、今の(訳注:present)コマンドを起動したキーシーケンスのストリン グを返します。
Variable: last-command-char
このグローバル変数には、最後に端末でタイプされた文字でコマンドの一部である ものが設定されます。
次の例において、この変数は C-u C-x C-e をタイプすることで評価されていま す。C-e の ASCII 値は 5 です。
last-command-char => 5
(this-command-keys) => "^U^X^E"
Variable: last-input-char
このグローバル変数には、最後に端末でタイプされた(入力)文字でコマンドやそう でないものの一部であるものが設定されます。
次の例において、文字 1 (ASCII 49) が読み込まれ、これが last-input-char の 値になります。一方 C-e は last-command-char の値であり続けます。
(progn (print (read-char)) (print last-command-char) last-input-char) -> 49 -> 5 => 49
Function: recent-keys
この関数は、端末から読み込まれた(最後の) 100 文字からなるストリングを返し ます。それは(Emacs で)読み込まれた最後の 100 文字で、例外はありません。
(recent-keys) => "erminal. These are the last characters read by Emacs, no exceptions.
@example (recent-keys)^U^X^E"
Variable: echo-keystrokes
このグローバル変数は、コマンド文字をエコーする前にどれだけ待つかを定めま す。ユーザーがプレフィックスキー(例えば C-x) をタイプすると、続行する前に これだけの秒数だけ待ってからキー C-x をエコーエリアにエコーします。これに 続くキーも同じようにエコーされます。
この値が 0 の場合、プレフィックスキーはエコーされません。この値は数字でな くてはいけません。
Variable: meta-flag
このグローバル変数は、(Emacs に対し)キーボード入力における 0200 ビットを META ビットとして扱うべきか否かを示します。
Variable: keyboard-translate-table
このグローバル変数は、キーボード入力に対する変換テーブルを定義します。これ は(ユーザーが)コマンドのバインディングを変更せずにキーボード上のキーを(再) 定義することを可能にします。
keyboard-translate-table がストリングの場合、キーボードから読み込まれた (各)文字はこのストリングで検索され、このストリング中の文字を代りに用いま す。ストリングの長さが N の場合、N 以上の文字コードは変換できません。
以下の例において、keyboard-translate-table は 128 文字のストリングに設定さ れています。文字 C-s と C-\ は入れ替えられ、文字 C-q と C-^ が入れ替えられ ています。この関数の実行後 C-\ をタイプすると、あたかも C-s がタイプされた かのように動作します(逆もなりたちます)。
(defun evade-flow-control () "Replace ^S with ^\ and ^Q with ^^." (interactive) (let ((the-table (make-string 128 0))) (let ((i 0)) (while (< i 128) (aset the-table i i) (setq i (1+ i))))
;; ^S と ^\ を入れ替える (aset the-table ?\034 ?\^s) (aset the-table ?\^s ?\034) ;; ^Q と ^^ を入れ替える (aset the-table ?\036 ?\^q) (aset the-table ?\^q ?\036)
(setq flow-control-evasion t) (setq keyboard-translate-table the-table)))
Function: input-pending-p
この関数は、"(今現在)コマンド入力が利用可能か否か" を示します。これはすぐ に戻り、利用可能である場合 t を返し、そうでない場合 nil を返します。
(実際)この値は、"入力が利用可能でない" と確信できた時にのみ nil になりま す。これは利用可能なコマンド入力が存在しない時でも t を返すことがありま す。(本当??)
Function: discard-input
この関数は、端末入力バッファの内容を捨て、キーボードマクロが定義されてある 時これをフラッシュします(訳注:捨てます)。 nil を返します。
次の例において、ユーザーはフォームの評価を始めた直後に何文字かタイプしてい ます。 sleep-for がスリープを終えた後、それまでにタイプされた文字は捨てら れます。(もっと良い例が必要!!)
(progn (sleep-for 2) (discard-input)) => nil