WINAPIs keybd_event () не распознается в некоторых программах - PullRequest
0 голосов
/ 04 июня 2010

Я создал интерфейс для контроллера NES с помощью atxmega, который отправляет ключи через последовательный порт. Проблема заключается в программе, которая читает входные данные и соответственно отправляет keybd_events.

if(szBuff[0] & BTN_LEFT) {
    keybd_event(VkKeyScan('j'), 0, 0, 0);
    keybd_event(VkKeyScan('j'), 0, KEYEVENTF_KEYUP, 0);
}

Проблема в том, что он не может быть распознан как 'j' в эмуляторе NES, в то время как в браузере это происходит.

1 Ответ

0 голосов
/ 04 июня 2010

Трудно ответить без объяснения того, как работает эмулятор Nintendo. Но вам нужно будет предоставить виртуальный код ключа для VkKeyScan (). Что является «J», а не «J». Пока клавиша Shift не нажата, Windows преобразует ее в сообщение WM_CHAR, которое генерирует «j».

Обратите внимание, что keybd_event () принимает виртуальный ключ и код сканирования. Вы передаете код сканирования в качестве виртуального ключа. Исправлено:

 keybd_event('J', VkKeyScan('J'), 0, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...