Обратная операция для GetKeyNameText - PullRequest
2 голосов
/ 03 мая 2019

Мы можем использовать GetKeyNameText(), чтобы получить строку, которая представляет имя ключа. Есть ли способ сделать обратное, то есть получить скан-код или виртуальный ключ для данного имени ключа?

Я хочу записать имена ключей в файл конфигурации, чтобы пользователи могли легко их редактировать. Когда я читаю в файле конфигурации, мне нужно будет сделать наоборот GetKeyNameText().

1 Ответ

2 голосов
/ 03 мая 2019

Не очень хорошая идея, эти имена не являются постоянными:

Имя клавиши переводится в соответствии с раскладкой установленной на данный момент клавиатуры, поэтому функция может давать разные результаты для разных языков ввода.

Если вы в отчаянии, я полагаю, что вы можете позвонить GetKeyNameText в цикле, пробуя все возможные коды сканирования.

MapVirtualKey может преобразовать скан-код в виртуальный ключ, если вам также необходимо это сделать. Виртуальные клавиши стабильны на всех клавиатурах и во всех версиях Windows.

Я бы посоветовал вам жестко закодировать некоторые из распространенных имен с виртуальными клавишами, такими как A-Z, 0-9, Ctrl, Alt, Shift, Home, Insert и т. Д., И сохранить их как текст на английском языке. Храните скан-код только для других странных ключей.

...