我找到了很多关于使用 GLUT 来检测是否Ctrl使用 GLUT_ACTIVE_CTRL 宏按下键的信息。显然,这个宏只在键盘或鼠标回调函数中有效。我需要知道Ctrl在我的主循环中的某个点是否按下了键,但是 GLUT_ACTIVE_CTRL 在这种情况下似乎不起作用。
Ctrl那么,有没有办法以独立于平台的 GLUT方式检测按键上的按键向上和按键向下事件(无需键入任何其他键)?
Ctrl编辑:按下键时不会触发键盘回调(至少对于默认设置) 。这是基本问题,我只能在Ctrl按下另一个键并因此触发键盘回调时测试该键是否被按下。
我的设置是这样的:
// ... in main function:
glutKeyboardFunc(keyboard);
//later in the code:
void keyboard(unsigned char key, int _x, int _y)
{
printf("keydown \n");
if (glutGetModifiers() == GLUT_ACTIVE_CTRL) {
printf("control key is pressed.\n");
}
//etc.
当我按下任何普通字符时,“keydown”会打印到标准输出。当我按下Ctrl键时,什么也没有发生。如果我按Ctrl+ C,则“按下 keydown 控制键”。被打印。
但是,在我的主循环中,我添加了:
if (glutGetModifiers() == GLUT_ACTIVE_CTRL) {
printf("Control key down.\n");
} else {
printf("Control key up.\n");
}
它总是打印“控制键向上”。不管我是否Ctrl按键。