如何使用GetAsyncKeyState()找到按下了哪个键盘键?

时间:2014-02-21 22:04:09

标签: c++ winapi unicode ascii keyboard-input

我目前无法正确检索标准键盘上的某些键(特别是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")是不好的做法,但这个控制台应用程序只是一个临时解决方案。

非常感谢您提供的任何帮助:)

0 个答案:

没有答案