0

wParam が提供する仮想キー コードを使用しようとしましたが、うまくいきませんでした。

  • 複数のキーが同じキー コードにマッピングされている
  • 一部のキーがまったく認識されませんでした
  • 仮想キーはキーボード レイアウトに適合しているように見えます (これは必要ありません)。

次に、lParam が「拡張」フラグとともにスキャンコードを提供することを確認しました。これは、次のように計算すると、キーボードのすべてのキーに対して異なる値を生成するようです。

value = (lParam & 0x01FF0000) >> 16;

この値は、さまざまなキーボード/システム間であっても、キーボードの同じキーに対して常に同じですか?

4

1 に答える 1

1

スキャンコードは、キーボードごとに異なる場合があります。仮想キー コードを使用するのが最適です。http://msdn.microsoft.com/en-us/library/ms646267(v=vs.85).aspxから:

キーボードの各キーには、スキャン コードと呼ばれる一意の値が割り当てられます。これは、キーボードのキーのデバイス固有の識別子です。ユーザーがキーを入力すると、キーボードは 2 つのスキャン コードを生成します。1 つはユーザーがキーを押したとき、もう 1 つはユーザーがキーを離したときです。

キーボード デバイス ドライバーは、スキャン コードを解釈し、それを仮想キー コードに変換 (マップ) します。これは、キーの目的を識別する、システムによって定義されたデバイスに依存しない値です。

于 2011-09-06T22:12:24.160 に答える