現在 DirectInput を使用しているアプリケーションを、代わりに RawInput を使用するように変換しています。(DirectInput は、ほとんど非推奨の API です。)
残念ながら、RawInput は DirectInput の後継として推奨されていますが、DirectInput とまったく同じ方法でキーボード データを提供しているようには見えません。
DirectInput はDIK_*
定数 ( DIK_A
、DIK_RETURN
など) を使用して、キーボード上の特定の物理キーを定義します。これらのキーは、キーボード ハードウェア全体で一貫していますが、キーボード レイアウトによって変わることはありません。(たとえばDIK_Q
、標準の US-English QWERTY キーボードの Q キーがある物理的な位置にあるキーを指します。) 私の場合、これは望ましい動作です。
RawInput のRAWKEYBOARD
構造は、 aMakeCode
と a の両方を提供しますVKey
。VKey
キーボードの配列によって変わるので使えません。
しかし、は定数MakeCode
と 1:1 で対応していません。DIK_*
特に、左右の ctrl キーと alt キー、またはほとんどのテンキー キーを他のキーと区別しません。
私の質問は次のとおりです。RAWKEYBOARD
構造体の内容を使用して、同等のDIK_*
定数を計算することは可能ですか? そして、それがそれを理解することの一部であると仮定すると、定数と同じように、キーボードハードウェア全体で定数であるMakeCode
ことを信頼できますか?MakeCode
DIK_*