1

現在 DirectInput を使用しているアプリケーションを、代わりに RawInput を使用するように変換しています。(DirectInput は、ほとんど非推奨の API です。)

残念ながら、RawInput は DirectInput の後継として推奨されていますが、DirectInput とまったく同じ方法でキーボード データを提供しているようには見えません。

DirectInput はDIK_*定数 ( DIK_ADIK_RETURNなど) を使用して、キーボード上の特定の物理キーを定義します。これらのキーは、キーボード ハードウェア全体で一貫していますが、キーボード レイアウトによって変わることはありません。(たとえばDIK_Q、標準の US-English QWERTY キーボードの Q キーがある物理的な位置にあるキーを指します。) 私の場合、これは望ましい動作です。

RawInput のRAWKEYBOARD構造は、 aMakeCodeと a の両方を提供しますVKeyVKeyキーボードの配列によって変わるので使えません。

しかし、は定数MakeCodeと 1:1 で対応していません。DIK_*特に、左右の ctrl キーと alt キー、またはほとんどのテンキー キーを他のキーと区別しません。

私の質問は次のとおりです。RAWKEYBOARD構造体の内容を使用して、同等のDIK_*定数を計算することは可能ですか? そして、それがそれを理解することの一部であると仮定すると、定数と同じように、キーボードハードウェア全体で定数であるMakeCodeことを信頼できますか?MakeCodeDIK_*

4

1 に答える 1