我试图将给定的vkCode和scanCode转换为基于键盘的实际字符。我试图实现的目的是将 AltGr + V 转换为' @', Shift + 1 到'!'等,但基于当前的键盘布局。我设法让它简单地工作,但经过一次未知的改变后,它不再有效。这是我现在拥有的:
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&# 39)
如何让ToUnicodeEx返回正确的值?