我想查看用户按下哪个键。
我知道有cin()
或getline(cin, var)
但我不想输入,我想获取密钥的数量(索引或代码被调用?)。
例如,如果用户按下F1
或F10
或Enter或Escape然后返回正确的操作,我想知道。
例如:
if(user_has_pressed_escape)
{
exit_the_console();
}
答案 0 :(得分:4)
这可以通过OS自己的API获得。不同的操作系统有不同的API(例如android根本没有F10密钥)。
通常,您将使用第三方库来包装API,以便您可以独立于操作系统进行编码。对于第三方库,有很多选择:SDL,QT
,wxWidgets
,GTK
以及更多......
这些库隐藏了与您的特定OS API的交互,让您编写一次代码并在多种类型的系统上运行。但要了解它是如何工作的,您可以查看每个操作系统文档。
例如,在Windows GetKeyboardState或PeekMessage
在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强烈互动。
如果您对此主题了解不多,则应尝试避免使用键盘本身。