キーボードから得られる入力には、通常キーとファンクションキーの2種類があります。通常キーは(修飾されている可能性のある)文字に対応しており、それらが生成するイベントはLispでは文字として表現されます。文字イベントのイベント型は文字そのもの(整数)であり、そこにはいくつかの修飾ビットが設定されている場合があります。イベントの分類を参照してください。
入力文字イベントは、0から524287までの基本コードと、以下の修飾ビットのいずれか、またはすべてで構成されます:
文字コードの2**27ビットは、メタキーを押しながら入力された文字を示します。
文字コードの2**26ビットは、ASCII以外の制御文字であることを示します。
ASCII 制御文字(C-a など)は独自の基本コードを持っているため、Emacs ではこれらを示すための特別なビットは不要です。したがって、C-a のコードは単に 1 となります。
しかし、コントロールキーを用いて%のようにASCIIに含まれない制御文字の組み合わせを入力した場合、得られる数値は%のコードに2**26を加えたもの(端末が非ASCII制御文字をサポートしていると想定した場合)、すなわち27ビット目がセットされた値となります。
文字イベントコードの2**25ビット(26番目のビット)は、Shiftキーを押しながら入力されたASCII制御文字を示します。
文字の場合、基本コード自体で大文字か小文字かが示されます。一方、数字や句読点では、シフトキーを押すことで基本コードが異なる全く別の文字が選択されます。可能な限りASCII文字セットの範囲内に収めるため、Emacsではこうした文字イベントに2**25ビットを使用することを避けています。
しかし、ASCIIではC-AとC-aを区別する手段がないため、EmacsではC-Aの2**25ビットを使用し、C-aでは使用しません。
文字イベントコードの2**24ビットは、ハイパーキーを押したまま入力された文字を示します。
文字イベントコードの2**23ビットは、スーパーキーを押しながら入力された文字を示します。
文字イベントコードの 2**22 ビットは、Altキーを押しながら入力された文字を示します。(ほとんどのキーボードで Alt と表記されているキーは、実際にはこれではなくメタキーとして扱われます。)
プログラム内で具体的なビット番号に言及することは避けるのが最善です。文字の修飾ビットをテストするには、関数 event-modifiers を使用してください(イベントの分類を参照)。keymap-set でキーバインドを設定する際は、これらのイベントを代わりに ‘C-H-x’ のような文字列(“control hyper x”
の場合)で指定します(キーバインドの変更を参照)。