Platform SDK: DirectX

キーボード データの解釈

[C++]

ここでは、IDirectInputDevice7::GetDeviceState メソッドおよび IDirectInputDevice7::GetDeviceData メソッドが報告するデータのキーの識別について説明する。GetDeviceData からのデータの解釈についての詳細は、「タイム スタンプとシーケンス番号」を参照すること。

[Visual Basic]

ここでは、DirectInputDevice.GetDeviceState メソッドおよび DirectInputDevice.GetDeviceData メソッドが報告するデータのキーの識別について説明する。GetDeviceData からのデータの解釈についての詳細は、「タイム スタンプとシーケンス番号」を参照すること。

DirectInput がキーボードを読み取る上で、Windows のほかの方法と異なるのは、次の重要な点である。キーボード データは、仮想キーを指すのではなく、実際の物理的なキー、すなわち、スキャン コードを指す。たとえば、DIK_ENTER はメイン キーボードの Enter キーを指すが、テンキーの Enter キーは指していない。

DirectInput は、拡張キーボード上の各キーに対する定数と共に、国際キーボード上にある追加キーも定義する。NEC キーボードは、PC 拡張キーボードとは異なるスキャン コードをサポートしているので、DirectInput は、可能な限り NEC スキャン コードを PC 拡張スキャン コードに変換する。

また、すべての PC 拡張キーボードに、新しい Windows キー (DIK_LWIN、DIK_RWIN、DIK_APPS) があるわけではない。キーが物理的にも使用可能であるかどうかを確認する方法はない。

ラップトップなどの小型コンピュータは、フルセットのキーを実装していない。代わりに、一部のキー (普通はテンキー) をほかのキーと多重化し、補助モードキーによって選択するようにして、個別のスキャン コードをつくらないようにしている。

キーボード サブタイプが PC XT または PC AT キーボードを示している場合、DIK_F11、DIK_F12、およびすべての拡張キー (0x7F より大きい DIK_* 値を持つキー) は利用できない。さらに、PC XT キーボードには DIK_SYSRQ がない。

日本語キーボード、特に NEC PC-98 キーボードは、US キーボードとは相当に異なるキー セットを含んでいる。詳細については、「DirectInput と日本語キーボード」を参照すること。