私の顧客の1人がアゼルティキーボードを使用していると文句を言い、自分の製品を使用できないときに問題が発生しました。だから私は仮想キーの代わりにスキャンコードを使うことにしました。関数MapVirtualKeyがそれを達成するのに本当に便利だとわかりました。しかし、ある状況では、MapVirtualKey関数を使用するのではなく、{if(isKeyDown [30])return 'A';}のように数値自体を使用したいと思いますが、インターネットを回り、スキャンコードは、それが私のキーボードのスキャンコードとは異なり、このMS scan code tableすべてのキーボードでスキャンコードが同じ
は、だから私は本当に不思議からでも違う理由は、この画像に は、私は、それを理解していないように、私のようではありません、それは安全な使用することです
if (isDownNow[48])
return 'B';
代わりの
if (isDownNow[MapVirtualKey('B', MAPVK_VK_TO_VSC)])
return 'B';
読みいただきありがとうございます:)
編集:私は毎回代わりにコールMapVirtualKeyの、私は上記の問題の解決策を持っていると思う を、私は、配列内のマップを格納します。しかし、新しい問題が出てくる。 私はアゼルティキーボードを持っていないので、私はこれをテストすることはできません、私はわずかなキーボードを持っているので、私はこの問題を混乱させる: 私は私のマップを格納するためにこの機能を持っています。
void MapKeyData()
{
for (int i = 0; i < KEYS_SIZE; i++)//KEYS_SIZE=255
mapKey[i] = MapVirtualKey(i, MAPVK_VK_TO_VSC);//mapKey is unsigned char array
}
しかし、私はAZERTYキーボードでのWとZ通常のキーボードで(QWERTYキーボード)マップが欲しいです。しかし、上記の関数MapKeyDataのように、私はqwertyキーボードのZはまだ私の目的ではないアゼルティキーボードのZとマップしていると思います。私はキーボードのレイアウトではなく、キー自体を保持したいと思っています。しかし、私が言ったように、最初の画像がキーコードとスキャンコードが異なることを示すように、すべてのキーボードでスキャンコードが同じであるかどうかはわかりません。読書のための
感謝:)