Итак, я пытаюсь получить имя нажатой клавиши с помощью GetKeyNameText
, используя код make / scan и флаг расширенной клавиши, заданный необработанным вводом:
std::wstring GetKeyName(const RAWKEYBOARD& info)
{
WCHAR n[128];
const int l = GetKeyNameTextW((info.MakeCode << 16) | ((info.Flags & RI_KEY_E0) != 0 ? 1 << 24 : 0), n, ARRAYSIZE(n));
if(l == 0) { return L""; }
return std::wstring(n);
}
Это работает хорошооднако для большинства клавиш Num /
(код сканирования 53) и Num *
(код сканирования 55) дают неверные результаты: они оба дают строку "(ZEHNERTASTATUR)" (раскладка немецкой клавиатуры, поэтому на английском языке будет "Num")) - поэтому в названии отсутствует /
или *
.
Я проверил это на двух разных клавиатурах, с одинаковыми результатами (используя Windows 10, кстати), я что-то упустил? Почему эти два ключа не имеют правильных имен?