Учтите, что для видеоигры Windows мне нужно определить, была ли нажата клавиша, которая генерирует символы `и ~ на английской раскладке клавиатуры США (которая обычно находится ниже клавиши Escape и слева от 1). Это может звучать как банальный вопрос, но мне он не кажется.
Когда Windows отправляет сообщения с клавиатуры, она указывает код виртуальной клавиши и код сканирования OEM. Мы не можем полагаться на код сканирования OEM, потому что «значение зависит от OEM», и мы не можем зависеть от кода виртуальной клавиши, поскольку он зависит от текущей активной раскладки клавиатуры.
Наше текущее «решение» - использовать LoadKeyboardLayout
и MapVirtualKeyEx
, чтобы найти код сканирования OEM ключа, который генерирует символ `на английской раскладке клавиатуры США, а затем просто прослушать этот код сканирования OEM. Проблема в том, что это не работает, если у пользователя не установлена английская раскладка в США.
Есть ли реальный способ сделать это в Windows?