将vkCode和扫描代码转换为有意义的字符
我试图根据键盘将给定的vkCode和扫描代码转换为实际字符。我试图实现的示例是将AltGr+V转换为@,将Shift+1转换为“!”等等,但基于当前的键盘布局。我设法让它暂时工作,但在一个未知的变化后,它不再工作了。以下是我目前拥有的:将vkCode和扫描代码转换为有意义的字符,c,windows,winapi,C,Windows,Winapi,我试图根据键盘将给定的vkCode和扫描代码转换为实际字符。我试图实现的示例是将AltGr+V转换为@,将Shift+1转换为“!”等等,但基于当前的键盘布局。我设法让它暂时工作,但在一个未知的变化后,它不再工作了。以下是我目前拥有的: unsigned char btKeys[256] = {0}; GetKeyboardState(btKeys); HKL keyboardLayout = GetKeyboardLayout(0); wchar_t szBuffer[2] = {0}; i
unsigned char btKeys[256] = {0};
GetKeyboardState(btKeys);
HKL keyboardLayout = GetKeyboardLayout(0);
wchar_t szBuffer[2] = {0};
if (ToUnicodeEx(vkCode, scanCode, btKeys, szBuffer, 2, 0, keyboardLayout)) {
if (iswcntrl(szBuffer[0])) {
sendControl(szBuffer[0]);
} else {
sendCharacter(szBuffer[0]);
}
}
但由于某些原因,我只能返回通过vkCode发送的相同字符(例如,按Shift+1只生成“1”)
如何让Tounicodex返回正确的值?您使用的虚拟密钥和扫描代码可能重复?