スキャンコードの概要
スキャンコード(scancode)は、
コンピュータにおいてキーボードのキーが押されたり離された際に、
CPUに送信される一連の
符号です。このプロセスは、「走査コード」とも呼ばれ、デジタルデバイスにおける入力の基本的な部分を形成しています。スキャンコードは、キーの動作を物理的に識別する役割を果たし、具体的な文字や機能とは独立しています。
スキャンコードの仕組み
コンピュータで「A」のキーを押すと、通常「A」の
文字コードが送信されると考えがちですが、実際にはキーボードコントローラがそのキーに特有のスキャンコードを生成し、
CPUに送ります。この過程では、押下されたキーの情報をもとに、
キー配列や
修飾キーの状態も考慮しながら、正しい文字か機能が認識されます。
押下時のスキャンコードはメイクコード、キーを離したときに発生するのはブレイクコードと呼ばれます。そして、同じキーに対してメイクコードとブレイクコードは通常、MSBやプレフィクスコードを使って区別されます。たとえば、オートリピート機能を持つキーボードでは、キーが押されている限り、メイクコードが定期的に送信されます。
インターフェースとスキャンコードのバリエーション
スキャンコードの体系は様々な
コンピュータ機種によって異なりますが、インタフェース規格もその構造に影響を与えます。同一の機種やインターフェースであっても、複数のスキャンコード体系が存在するため、
オペレーティングシステム(OS)は受け取ったスキャンコードを、そのOS独自の仮想キーコードに変換して扱うことが一般的です。
キーボードは国や地域に応じてJIS配列やUS配列など、さまざまな方式で設計されていますが、物理的な配置が同じであれば、キーの刻印が異なっていても、同一のスキャンコードを発生させることが普通です。これにより、異なる配列間での互換性が高まります。たとえば、JIS配列のキーボードにUS配列の設定を適用しても、ほとんどのキーは問題なく機能します。ただし、物理的に異なるキー位置や機能を持つ場合には、この限りではありません。
具体的なキーボードのスキャンコード
PC/AT・PS/2キーボード
PC/AT互換機|PC_AT互換機のスキャンコード体系は複雑で、時代を経ながら変化してきました。最初の83キーボード(
IBM PC、PC/XT)は比較的簡潔で、01から53までのスキャンコードを使用しました。84キーボード(PC/AT)では物理的配置が一部変更され、一部のキーが追加されました。101拡張キーボード以降は、さらに多くのキーが追加され、コードセットが増えています。
USBキーボード
USBキーボードは、
ヒューマン・インタフェース・デバイス(HID)デバイスクラスの一部として定義されており、スキャンコードの代わりにUsageという用語が用いられます。Usageは32ビットの
符号なし整数で構成され、特定の物理状態をホストに通知します。USBデバイスでは、押されたり離されたりしたキーの情報が静的に送信されますが、スキャンコードとは異なるため、全体の設計思想が反映されています。
スキャンコードの結論
スキャンコードは、キー入力としての役割を果たす重要な要素であり、キーボードの作用を理解する上で不可欠です。各機器に応じたスキャンコードの体系や、その変換・処理方法を知ることで、
コンピュータの動作をより深く理解できるでしょう。今後も、各種のキーボードが異なる機種間でどのように機能するのかを考えることが、エンジニアや開発者にとって重要です。