GLUT键按下并按下CTRL键

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按键.

gen*_*ult 1

没有按照规定使用 GLUT 。您可能希望查看GLFW