0

キーの押下を検出するプログラムに問題があります。すべての文字は QUERTY キーボードで機能しますが、AZERTY キーボードの特定の文字に問題があることを認識しています。

たとえば、AZERTY キーボードで \ を押すと、226 (â) のキーコードが割り当てられます。

キーボード レイアウト全体で動作が一貫していることを確認するにはどうすればよいですか? 組み込みのイベント処理が一貫していることを期待していました。

4

3 に答える 3

0

私はそれをまったく再現できません。AZERTY キーボードでは、バックスラッシュは、文字の上にある数字の列にあるキーをAltGr押したまま押すことによって作成されます。8これを行うと、次のKeyDownイベントが発生します。

  • KeyCode: メニュー、KeyValue: 18AltGr下り用
  • KeyCode: D8、KeyValue:8下りは 56

一方、すぐ左にあるキーを押すと、WKeyCode KeyDownOemBackslash と KeyValue 226 が起動<され、テキスト ボックスに文字が表示されます。

キーボード レイアウトが特定のキーボードに合わせて正しく設定されていないのではないかと思います。あなたのキーボードはこのウィキペディアのページの画像のように見えると思います: http://en.wikipedia.org/wiki/AZERTY

于 2012-05-22T08:28:35.500 に答える
0

最初にキーボード レイアウトを検出してから、別のキーコードを文字マッピングに使用することをお勧めします。

于 2012-05-21T20:27:27.647 に答える
0

はい、キーボード レイアウトが異なれば、キー コードも異なります。ドキュメントではVK_OEM_102(キーコード 226) をと説明している"<>" or "\|" on RT 102-key keyboardため、キーコードは特定の 1 文字に対応することさえ想定されていません。

キーが対応する文字を確認するには、MapVirtualKey関数を使用します。次に、それがバックスラッシュかどうかを確認できます。

于 2012-05-22T08:35:23.673 に答える