Next: , Up: 入力イベント   [Contents][Index]


22.7.1 キーボードイベント

キーボードから取得できる入力には2つの種類があります。それは通常のキーとファンクションキーです。通常のキーは文字に対応しており(修飾されているかもしれない)、それらが生成するイベントはLisp内では文字で表現されます。文字イベントのイベント型は文字自身(整数)であり、何らかの修飾ビットがセットされているかもしれません。イベントの分類を参照してください。

入力文字イベントは0から524287までの基本コード(basic code)に加えて、以下の修飾ビット(modifier bits)の一部、またはすべてによって構成されます:

meta

文字イベントコードのビット 2**27 はメタキーが押下された状態で文字がタイプされたことを示す。

control

文字イベントコードのビット 2**26 は非ASCIIコントロール文字を示す。

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

しかし%のような非ASCIIとコントロールを組み合わせてタイプすると取得される数値は%に 2**26 を加えた値となる(端末が非ASCIIコントロール文字、すなわち27番目のビットがセットされた文字をサポートすると仮定する)。

shift

文字イベントコードのビット 2**25 (26番目のビット)はシフトキーが押下された状態でASCIIコントロール文字がタイプされたことを示す。

アルファベット文字にたいしては、基本コード自身が大文字か小文字かを示す。数字と句読点文字にたいしてシフトキーは、異なる基本コードをもつ完全に違う文字を選択する。可能な限りASCII文字として保つために、Emacsはこれらの文字にたいしてビット 2**25 を使用しない。

しかしASCIIC-AC-aを区別する方法を提供しないので、EmacsはC-Aにたいしてビット 2**25 を使用し、C-aには使用しない。

hyper

文字イベントコードのビット 2**24 はハイパーキーが押下された状態で文字がタイプされたことを示す。

super

文字イベントコードのビット 2**23 はスーパーキーが押下された状態で文字がタイプされたことを示す。

alt

文字イベントコードのビット 2**22 はアルトキーが押下された状態で文字がタイプされたことを示す(ほとんどのキーボードでAltとラベルされたキーは、実際にはアルトキーではなくメタキーとして扱われる)。

プログラム内での特定のビット数値の記述は避けるのが最善の方法です。文字の修飾ビットをテストするためには、関数event-modifiers (イベントの分類を参照)を使用してください。キーバインディングを作成する際には、文字の読み取り構文に修飾ビット(‘\C-’、‘\M-’、...)を付加することができます。define-keyによるキーバインディングの作成には、文字の指定に(control hyper ?x)のようなリストを使うことができます(キーバインディングの変更を参照)。event-convert-listはこのようなリストをイベントタイプに変換する関数です(イベントの分類を参照)。