В настоящее время у меня возникают проблемы с правильным извлечением некоторых клавиш на стандартной клавиатуре (в частности, клавиш F, клавиш со стрелками и т. Д.). Я перебираю все 256 символов ASCII, используя GetAsyncKeyState()
на каждое целое число, чтобы увидеть, нажата ли она, и если это так, сохраняет его как символ для использования в более позднем SendMessage()
функция.
это сделано для того, чтобы я мог позволить пользователю сопоставить конкретный ключ кнопке / аналоговому элементу контроллера Xbox 360 с помощью XInput, а затем отправить ключ в самое верхнее окно при срабатывании этой кнопки / аналогового элемента.
Мне известно, что проблема заключается в шестнадцатеричном / десятичном преобразовании из кода виртуальной клавиши, идентифицируемого GetAsyncKeyState()
например, когда я нажимаю F4 (hex 73, Dec 115) символ назначается на «s», что в ASCII является тем же значением hex / dec.
Unicode — путь вперед для этого? Если да, то как бы это реализовать, чтобы получить правильные значения для SendMessage()
функционировать?
Ниже находится цикл для GetAsyncKeyState()
while (mKey == NULL)
{
system("cls");
cout << "Press Key" << endl;
for (int i = 0; i < 256; i++)
{
if (GetAsyncKeyState((i) & SHRT_MAX))
{
mKey = i;
}
}
}
Я в курсе system("cls")
Это плохая практика, но это консольное приложение является лишь временным решением.
Буду очень признателен за любую помощь 🙂
Задача ещё не решена.
Других решений пока нет …