メッセージをSetWindowsHookEx
withからWH_KEYBOARD_LL
押されたキーの有用な表現に変換する正しい方法は何ですか?
これには、ローカル キーボードのマッピングを理解することが必要になる可能性が高いことは承知しています。(注:簡単にするために、キーが離されたときではなく、キーが押されたときのみを考慮しています)
大まかに言えば、次の 3 つのシナリオがあるようです。
- 特殊キーが押された (Ctrl/Escape/Shift/Alt)
- 標準キーが押された (
A-Z
、0-9
など...a
とA
両方とも として読み取られることに注意してくださいA
) - テンキーやF1-F12
特殊キーは必要に応じて処理でき、便利なルックアップがいくつかあります。System.Windows.Forms.Keys
しかし、(英国英語キーボードで)感嘆符を入力すると、次のように検出されますShift-Down1Shift up
キーボードの「変換」レイヤーを通過した後にコードを取得するには低すぎるレベルでフックしているため (私は信じています)、コードを正しく解釈する方法に興味があります。
なぜ私がこれをしているのかについて。これは、私が作成したメディア プレーヤーに便利なショートカットを提供する方法として始まりました。これは、ゲーム内であっても、どこでも機能します (一部のゲームでは、キー ストロークをインターセプトし、OS への伝播を防止するようです)。アプリを使用している限り(おそらくユーザーのみ)、実際に必要なものは十分にありますが、必要に応じてこれをさらに進める方法について好奇心をそそられます.