Добрый день, коллеги!
Появилась необходимость поддержки в программе альтернативных клавиатурных раскладок (т.е. тех, которые
позволяют вводить дополнительные символы в сочетании с правым Alt'ом) и столкнулся с такой ситуацией:
Есть диалог с EditBox'ом, в PreTranslateMessage ловлю WM_KEYDOWN/WM_SYSKEYDOWN и с помощью GetKeyState
проверяю статусы клавиш VK_MENU/VK_SHIFT/VK_CONTROL.
Если текущая раскладка английская/русская, то при нажатии в EditBox'е клавиши Alt (левая/правая — без
разницы) в PreTranslateMessage прилетает WM_SYSKEYDOWN со статусом VK_MENU.
Если текущая раскладка альтернативная (для определённости киргизская — KY), то при нажатии на левый Alt
всё происходит аналогично английской/русской раскладке, но если нажать правый Alt, то:
1. Вместо WM_SYSKEYDOWN приходят ДВА сообщения WM_KEYDOWN;
2. В первом сообщении получаем статус VK_CONTROL, во втором — VK_CONTROL и VK_MENU (т.е. нажатие правой
клавиши Alt превращается в комбинацию Ctrl-Alt).