Обнаруживаете определенные клавиши на клавиатуре AZERTY?

У меня есть проблема в программе, где я обнаруживаю нажатия клавиш. Все символы работают на клавиатурах QUERTY, но мне известны проблемы с определенными символами на клавиатурах AZERTY.

Например, когда \ нажимается на клавиатуре AZERTY, ему присваивается код клавиши 226 (â).

Как я могу гарантировать, что поведение одинаково для всех раскладок клавиатуры? Я ожидал, что встроенная обработка событий будет последовательной.

3 ответа

Возможно, вы захотите сначала определить раскладку клавиатуры, а затем использовать другой код клавиши для сопоставления символов.

Да, разные раскладки клавиатуры дают разные коды клавиш. Документация описывает VK_OEM_102 (код 226) как "<>" or "\|" on RT 102-key keyboardпоэтому код клавиши даже не должен соответствовать какому-либо конкретному символу.

Чтобы увидеть, какому символу соответствует клавиша, используйте функцию MapVirtualKey. Затем вы можете проверить, является ли это обратной косой чертой.

Я не могу воспроизвести это вообще. Обратная косая черта составляется на клавиатуре AZERTY, удерживая нажатой клавишу AltGr, а затем нажимая клавишу 8 в ряду цифр над буквами. Когда вы делаете это следующее KeyDown События запускаются:

  • KeyCode: Menu, KeyValue: 18 для понижающего AltGr
  • KeyCode: D8, KeyValue: 56 для 8 понижается

С другой стороны, если вы нажмете клавишу слева от W, то KeyDown с KeyCode OemBackslash и KeyValue 226 запускается, и < символ появляется в текстовом поле.

Интересно, неправильно ли установлена ​​раскладка клавиатуры для вашей конкретной клавиатуры. Я предполагаю, что ваша клавиатура выглядит как изображение на этой странице Википедии: http://en.wikipedia.org/wiki/AZERTY

Другие вопросы по тегам