如何在c ++中从键盘读取键?

时间:2014-06-04 07:30:10

标签: c++ keyboard

如何在c ++中从键盘读取键? 我使用了_getch()但这总是不起作用。

我听说过win32键盘api。我的目标是Windows,所以窗口特定的技术是好的。任何人都可以给我一个简单的例子如何读取密钥并检查箭头和功能键。

我读过文章 How to simultaneous read keys on keyboard?

但这种情况并非如此。这是我从上面的链接参考启发的尝试

char temp;
BYTE keys[256];
while(true)
{
    temp = _getch();
    if(GetKeyboardState(keys))
    {
        if(keys[VK_UP]&0xF0)
        {
            // Move Up : Case failing when i pressed up key
        }
        else if(keys[VK_DOWN]&0xF0 || keys[VK_RETURN]&0xF0)
        {
            // Move Down : Case failing when i pressed down or enter

        }
        else if(keys[VK_TAB]&0xF0)
        {
            // Move Next : Case failing when i pressed tab
        }
        else
        {
            // Print charecter which read using _getch()
            cout<<temp;
        }

    }
}

我阅读了MSDN文章,但不明白他们在做什么。我是第一次做这样的程序,所以请让你的例子清楚和说明,所以我很容易得到它。感谢

2 个答案:

答案 0 :(得分:0)

我手头没有Windows机器来测试这个,但我认为你在temp = _getch();之前使用GetKeyboardState(keys)这个事实正在吃你的角色。

答案 1 :(得分:0)

C ++中有很多库可以处理这类问题,如果您愿意,我建议您使用QKeySequence和其他类来进行有用的键盘管理。

如果您想查看示例,请参阅chrome项目,这是一个用于测试“键盘驱动程序”代码的example

您可以使用Google搜索引擎中的“filetype”语法搜索多个示例(例如:filetype:cc GetKeyboardState)...

在使用GetKeyboardState ...

之前,您需要正确设置布局

希望这对你有所帮助。

的问候,
/穆罕默德