我目前无法正确检索标准键盘上的某些键(特别是F键,箭头键等)。我在每个整数上使用GetAsyncKeyState()
循环遍历所有256个ASCII字符以查看它是否被按下,如果是,则将其存储为char以在稍后的SendMessage()
函数中使用。
这样我可以允许用户使用XInput将特定键映射到Xbox 360控制器按钮/模拟项,然后在触发该按钮/模拟项时将密钥发送到最顶层窗口。
我知道问题出在于GetAsyncKeyState()
函数识别的虚拟键码的十六进制/十进制转换,例如,当我按 F4 时(十六进制73,十进制) 115)将char分配给“s”,其中ASCII是相同的十六进制/十进制值。
Unicode是前进的方式吗?如果是这样,我将如何实现它以检索SendMessage()
函数的正确值?
以下是GetAsyncKeyState()
while (mKey == NULL)
{
system("cls");
cout << "Press Key" << endl;
for (int i = 0; i < 256; i++)
{
if (GetAsyncKeyState((i) & SHRT_MAX))
{
mKey = i;
}
}
}
我知道system("cls")
是不好的做法,但这个控制台应用程序只是一个临时解决方案。
非常感谢您提供的任何帮助:)