Next: , Previous: Input Events, Up: Input Events


20.5.1 キーボードイベント

キーボードからは2種類の入力があります。 普通のキーとファンクションキーです。 普通のキーは文字に対応します。 それらが生成するイベントは、Lispでは文字として表現されます。 文字イベントのイベント型は文字自身(整数)です。 Classifying Eventsを参照してください。

入力文字イベントは、0から524287までの基本コード(basic code)と 以下の修飾ビット(modifier bit)の任意の組み合わせです。

meta
文字コードのビット は、メタキーを押し下げながら文字を打ったことを表す。
control
文字コードのビット は非ASCII文字のコントロール文字を表す。

C-aなどのASCIIコントロール文字には 独自の特別な基本コードがあるため、 Emacsはそれを表すための特別なビットを必要としない。 つまり、C-aのコードは単に1である。

しかし、コントロールキーを使った%などの ASCIIにないコントロールとの組み合わせを打った場合、 得られる数値は%のコードに を加えたものである (端末で非ASCIIのコントロール文字を扱えるとして)。

shift
文字コードのビット は、シフトキーを押し下げながら ASCIIコントロール文字を打ったことを表す。

英文字では、基本コードそのものが大文字か小文字かを表す。 数字文字と区切り文字では、 シフトキーは異なる基本コードのまったく異なる文字を選ぶ。 可能な限りASCII文字集合ですませるために、 これらの文字に対しては、Emacsはビット を使わない。

しかし、ASCIIではC-AC-aを区別できないため、 Emacsは、C-Aではビット を使うが、C-aではこのビットを使わない。

hyper
文字コードのビット は、ハイパーキーを押し下げながら文字を打ったことを表す。
super
文字コードのビット は、スーパーキーを押し下げながら文字を打ったことを表す。
alt
文字コードのビット は、アルトキーを押し下げながら文字を打ったことを表す。 (<ALT>とラベルされたキーが実際にはメタキーである端末も存在する。)

読者のプログラム内では、 特定の修飾ビットの値を明示することは避けるのが最良です。 文字の修飾ビットを検査するには、 関数event-modifiers(see Classifying Events)を使います。 キーバインディングを作るときには、 (‘\C-’、‘\M-’などの)修飾ビットを伴う文字の 入力表現を使います。 define-keyでキーバインディングを作るときには、 文字の指定には(control hyper ?x)のようなリストを使います (see Changing Key Bindings)。 関数event-convert-listは、そのようなリストを イベント型に変換します(see Classifying Events)。