キーボードからのデータは主にスキャンコードという形で送られ、キーを押すことで生成されたり、コンピューターとのプロトコルで使われたりする。(キーボードのファームウェアは内部で異なるコードを使用し、いくつかのスキャンコードのセットも存在します。このセクションではデフォルトのコード、つまり翻訳されたスキャンコードセット2のコードについてのみ説明します。あまり一般的でないモードについては後述する)。各キーを押したり離したりすると、0~6個のスキャンコードが生成されます。
1.1 キーリリース
以下では、キーを押したときのスキャンコード(`make')についてのみ述べる。キー離し(`break')のスキャンコードは上位ビットを設定することで得られる(0x80=128を足す)。したがって、Escを押すとスキャンコード01、Escを離すとスキャンコード81(16進数)が得られる。シーケンスの場合も同様で、Keypad-/を押すとe0 35、離すとe0 b5となる。ほとんどのキーボードは、キーが繰り返されるとメイクコード(キーダウンコード)を繰り返す。また、リピート中にシフトダウンやシフトアップのイベントをフェイクするものもある。
PrtSc/SysRqキーとPause/Breakキーは特殊である。前者は、修飾キーが同時に押されていないとき、e0 2a e0 37というスキャンコードを生成し、ShiftまたはCtrlと一緒にe0 37を生成するが、(左または右の)Altと一緒に54を生成する。 (そして、リリース時に期待されるシーケンスを得る。しかし、以下を参照。) 後者は、(修飾キーなしで)押されたとき、e1 1d 45 e1 9d c5というスキャンコードを生成し、リリース時には全く何も生成しない。しかし、(左または右の)Ctrlと一緒に押すと、e0 46 e0 c6となり、離すとまた何もならない。これは繰り返さない。
異なる動作をするキーについてのレポートは下記を参照。
キーアップイベントがひどくデバウンスされたノートパソコンの報告は多い。従って、予期せぬキーアップイベントは、おそらく異常ではないとみなし、無視すべきである。
---