Есть ли способ получить это? Я использую INPUT
класс для имитации нажатий клавиш и при желании нажать клавишу в переменной типа char
Мне нужно использовать следующий метод:
INPUT ip;
ip.type = INPUT_KEYBOARD;
//a bunch of code, and flags...
ip.ki.wVk = toupper(foo);
…где foo имеет тип char
и определяется пользователем.
Это работает нормально, пока пользователь не введет символ, который не является обычной буквой, что приводит к регистрации совершенно другого ключа (что понятно). Вот почему я спрашиваю, возможно, есть метод, который позволяет мне получить шестнадцатеричный код ключа из значения переменной?
Я знаю, что я могу сделать большой switch(foo) case '1': //and so on...
заменить неподдерживаемые символы на соответствующие им коды клавиш, но на самом деле это означало бы много ненужного кода.
Так есть ли способ? Ответ высоко ценится, и если его нет, я пойду и решу его более сложным способом. Однако, поскольку эта проблема уже случалась для меня несколько раз, я решил, что это было бы полезно узнать для справки.
Чтобы превратить мой комментарий в ответ …
Я думаю ты хочешь VkKeyScanEx(...)
. Это превратит TCHAR
в виртуальный код клавиши и набор модификаторов клавиатуры, которые вы сможете использовать с SendInput(...)
Других решений пока нет …