2

私のアプリケーションでは、キーボードの「1」キーの左側にあるキーにショートカットをマップする必要があります。標準の US キーボードでは、これはバッククォート文字 (" ` ") で、キー コード番号 50 です。 残念ながら、国際キーボード (たとえば、フランス語のキーボード) では、1 キー (スラッシュ キー "/") を使用しているため、そのキー コードをハード コーディングすると、US キーボードを使用していないユーザーにとって予期しない結果が生じる可能性があります。

実行時にUSキーコードを国際キーボードのキーコードに変換する方法、またはキーボード上のキーの位置に基づいてプログラムでキーコードを決定する方法はありますか?

4

1 に答える 1

3

「1」の左側のキーの文字はキーボード レイアウトによって異なりますが、仮想キー コードは同じである必要があります。を見ると、あなたが話しているキーを表すHIToolbox/Events.h定数を見ることができます。kVK_ANSI_Grave定数のリストの上に、仮想キー コード レベルでは、等価とは物理キーが同じであることを意味することを示唆するコメントがありますが、スキャン コードは異なる可能性があり、発行される文字は異なる可能性があります。

つまり、キーボード ドライバはスキャン コードから仮想キー コードにマップし、キーボード レイアウト (システム環境設定で変更可能) は仮想キー コードから文字にマップします。

これはすべて間違っている可能性があります。これらのアサーションを検証するための非 US キーボードはありません。

于 2011-03-14T04:36:47.643 に答える