C ++如何获取键盘按键值(或数字/代码)

时间:2014-07-02 13:12:05

标签: c++

我想查看用户按下哪个键。

我知道有cin()getline(cin, var)但我不想输入,我想获取密钥的数量(索引或代码被调用?)。

例如,如果用户按下F1F10或Enter或Escape然后返回正确的操作,我想知道。

例如:

if(user_has_pressed_escape)
{
 exit_the_console();
}

4 个答案:

答案 0 :(得分:4)

这可以通过OS自己的API获得。不同的操作系统有不同的API(例如android根本没有F10密钥)。

通常,您将使用第三方库来包装API,以便您可以独立于操作系统进行编码。对于第三方库,有很多选择:SDLQTwxWidgetsGTK以及更多......

这些库隐藏了与您的特定OS API的交互,让您编写一次代码并在多种类型的系统上运行。但要了解它是如何工作的,您可以查看每个操作系统文档。

例如,在Windows GetKeyboardStatePeekMessage

在Linux X11上:XQueryKeymap或通过XPeekEvent

答案 1 :(得分:2)

ESC键的事件你可以很容易地使用ASCII表 http://pl.wikipedia.org/wiki/ASCII

if (27 == getchar()) // 27 is for ESC
{
    //do something
}

功能键(F1,F2,...)取决于您的操作系统。

答案 2 :(得分:1)

根据" INPUT VALUES" " PDCurses用户指南"在http://pdcurses.sourceforge.net/doc/PDCurses.txt找到,如果已启用键盘,则可以使用getch功能检测此类键。

以下是相关的密码。

KEY_F0      function keys; space for 64 keys is reserved
KEY_F(n)    (KEY_F0+(n))
KEY_EXIT    Exit key

PDCurses库具有跨平台的优势。

答案 3 :(得分:0)

作为C祖先的C ++与系统无关,因此没有办法只使用语言本身甚至STL库来做你想做的事。您将不得不在不同平台上使用不同的库。通常,这只是依赖于操作系统,因为大多数操作系统实际上都在寻找键盘操作,例如按下,使用中断机制。所以你的程序必须与OS强烈互动。

如果您对此主题了解不多,则应尝试避免使用键盘本身。