スキャンコード
コンピュータのキーボードでは、たとえば「A」のキーを押した場合、「A」という文字の文字コード(ASCIIコードなど)が直接送られるわけではない。
キーボードコントローラは、キーの押下あるいは解放を検出すると、そのキーに固有のスキャンコードをCPUに送る。スキャンコードは、キーボードのキーを物理的に識別するものであり、そのキーの表す文字や機能とは関係ない。CPUはスキャンコードを受け取ると、キー配列の設定や修飾キー・ロックキーなどの状態を参照して、該当する文字の入力として受理したり、修飾キーやファンクションキーの処理を実行したりする。
キーが押されたときに発生するスキャンコードをメイク (make) コード、離されたときに発生するものをブレイク (break) コードという。同じキーのメイクとブレイクはMSBやプレフィクスコードによって区別されることが多い。オートリピート(タイプマティック)の処理をキーボード側で行う場合、キーが押されている間、メイクコードを周期的に発生する。
スキャンコードの体系はコンピュータの機種によって異なる。また、インタフェース規格によって決まっていることもある。さらに、同じ機種・インタフェースであっても、複数の体系をもっている場合もある。そのため、オペレーティングシステム (OS) は受け取ったスキャンコードをOS独自の仮想キーコードに変換・統一してから扱うのが一般的である。
ロックキーも一般のキーと同様に扱われる。
USBは特定の機種に依存したものではないため、キーボードもAT互換機・Macintosh・PC-9800/9821シリーズ・UNIXワークステーションなどさまざまな機種間でなるべく共通化できるように定められている。そのため、異なる機種用のUSBキーボードを接続しても、基本的には操作が可能である。
最近のキーボードは、CD・DVDなどを再生する「マルチメディアキー」や、ウェブブラウザ・電子メールクライアントなどを起動する「インスタントキー」を備えているものが少なくないが、キーボードのUsage page (0x0007) のUsage IDの定義にはこれらのキーは含まれていない(音量調節関連キーは例外)。これらのキーはConsumer pageのUsage IDとして定義されている。 このようなキーを備えるUSBキーボードは、通常内部的にはkeyboard usage pageを生成するデバイスとConsumer usage pageを生成するデバイス(リモコンなどの類)の複合デバイスになっている。Boot protocolでのreportがkeyboard usage pageのみで構成されているため互換性確保のためこのような実装になっていることが多いものと思われる。
初期のMac用USBキーボードには従前のADB用キーボードと同様にパワーキーがあった。信号線とGNDを接続する仕組みになっており、USB規格外である。