3

Windows ビデオ ゲームの場合、米国英語のキーボード レイアウトで ` および ~ 文字を生成するキー (通常は Escape キーの下にあり、1 のままです) が押されたかどうかを判断する必要があるとします。これは些細な質問のように聞こえるかもしれませんが、私にはそうは思えません。

Windows は、キーボード メッセージを送信するときに、仮想キー コードと OEM スキャン コードを指定します。「値は OEM に依存する」ため、OEM スキャン コードに依存することはできません。仮想キー コードは、現在アクティブなキーボード レイアウトに依存するため、依存することもできません。

現在の「解決策」は、米国英語のキーボード レイアウトで ` 文字を生成するキーの OEM スキャン コードを使用LoadKeyboardLayoutMapVirtualKeyExて検索し、その OEM スキャン コードをリッスンすることです。問題は、ユーザーが米国英語のレイアウトをインストールしていない場合、これが機能しないことです。

Windowsでこれを行う実際の方法はありますか?

4

2 に答える 2

4

OEM スキャンコードはキーボードごとに変わりません。使用しない理由はありません。

DOS の時代には、同じスキャンコードがゲームに使用されていました。キーアップとキーダウンのイベントを検出する唯一の方法だったからです。誰も問題を抱えていませんでしたし、将来変わるとは思えません。

別のオプションが必要な場合は、DirectInput-API を試してください。生のスキャンコードも提供されます。私が間違っていなければ、各キーの物理的な位置、寸法などを照会することもできます。

于 2008-12-27T11:19:23.300 に答える
1

キーの位置ではなく、ゲーム アクションをキャラクターに結び付けます。それ以外の場合、どのキーを押すかをユーザーにどのように伝えますか? 「エスケープキーの下」?そこには何もないかもしれませんが、「^ キー」と伝えれば、探すことができます。

また、エキゾチックなキーボード レイアウトやユーザー設定に対応するように構成可能にしたい場合もあります。

于 2008-12-27T11:20:02.877 に答える