Joh*_*ohn 5 opengl glut keyboard-events
我发现了很多关于使用GLUT检测是否Ctrl使用GLUT_ACTIVE_CTRL宏按下键的信息.该宏仅在键盘或鼠标回调函数中有效.我需要知道Ctrl在主循环中的某个点是否按下了键,但GLUT_ACTIVE_CTRL似乎在此上下文中不起作用.
那么,有没有办法以Ctrl平台独立的GLUT-ish方式检测密钥上的密钥和密钥事件(没有任何其他密钥被键入)?
编辑: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.
Run Code Online (Sandbox Code Playgroud)
当我按任何正常字符"keydown"打印到stdout.当我按下Ctrl键时,没有任何反应.如果我按Ctrl+ C,则按下"keydown控制键".打印出来.
但是,在我的主循环中,我添加了:
if (glutGetModifiers() == GLUT_ACTIVE_CTRL) {
printf("Control key down.\n");
} else {
printf("Control key up.\n");
}
Run Code Online (Sandbox Code Playgroud)
它总是打印"控制键".无论我是否Ctrl按键.