キーボード データの解釈
キーボード データの解釈
ここでは、IDirectInputDevice8::GetDeviceState メソッドおよび IDirectInputDevice8::GetDeviceData メソッドが報告するデータのキーを識別する方法について説明する。IDirectInputDevice8::GetDeviceData からのデータ解釈の詳細については、「タイム スタンプとシーケンス番号」を参照すること。
重要な点として、Microsoft® DirectInput® アプリケーションは、Microsoft Windows® とは異なる方法でキーボードを読み取る。DirectInput アプリケーションでは、キーボード データは仮想キーを指すのではなく、実際の物理的なキー、つまり、スキャン コードを指す。たとえば、DIK_ENTER はメイン キーボードの Enter キーを指すが、テンキーの Enter キーは指していない。
また、キーボードの違いにより、DirectInput アプリケーションがキーボード データを解釈する方法を変えることができる。たとえば、DirectInput は、拡張キーボード上の各キーや、国際キーボード上にある追加キーの定数も定義する。NEC キーボードは、PC 拡張キーボードとは異なるスキャン コードをサポートしているので、DirectInput は、可能な限り NEC スキャン コードを PC 拡張スキャン コードに変換する。
キーボードに関するその他の考慮点を以下に示す。
すべての PC 拡張キーボードに、新しい Windows キー (DIK_LWIN、DIK_RWIN、DIK_APPS) があるわけではない。Windows キーが物理的に使用可能かどうかを判断する方法はない。
ラップトップなどの小型コンピュータは、フルセットのキーを実装していない。代わりに、一部のキー (通常はテンキー) を他のキーと多重化し、別のスキャン コードを生成しない補助モード キーによって選択されるようにしている。
キーボード サブタイプが PC XT または PC AT キーボードを示している場合、DIK_F11、DIK_F12、およびすべての拡張キー (0x7F より大きい DIK_* 値を持つキー) は利用できない。さらに、PC XT キーボードには DIK_SYSRQ がない。
日本語キーボード、特に NEC PC-98 キーボードには、英語キーボードとは大きく異なるキー セットがある。詳細については、「DirectInput と日本語キーボード」を参照すること。