Go to the first, previous, next, last section, table of contents.

コマンドキー

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


Go to the first, previous, next, last section, table of contents.