我正在尝试GetKeyNameText使用原始输入给出的制作/扫描代码和扩展键标志获取按键的名称:
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);
}
Run Code Online (Sandbox Code Playgroud)
这对大多数键都很有效,但是,Num /(扫描代码 53)和Num *(扫描代码 55)给出了错误的结果:它们都给出了字符串“(ZEHNERTASTATUR)”(德语键盘布局,英语中的“Num”也是如此) – 所以的/或*丢失的名字。
我已经用两个不同的键盘对此进行了测试,结果相同(使用 Windows 10 顺便说一句),我错过了什么吗?为什么这两个键没有正确的名称?