2014-02-07 76 views
2

如何注册按下CTRL键?下面的代码适用于除CTRL所有的键:OpenGL和GLUT键盘功能

switch (key) 
{ 
case GLUT_KEY_RIGHT: 
    cout << "right key" << endl; 
    glutPostRedisplay(); // Redraw the scene 
    break; 
case GLUT_KEY_LEFT: 
    cout << "left key" << endl; 
    glutPostRedisplay(); // Redraw the scene 
    break; 
case GLUT_KEY_UP: 
    cout << "up key" << endl; 
    glutPostRedisplay(); // Redraw the scene 
    break; 
case GLUT_KEY_DOWN: 
    cout << "down key" << endl; 
    glutPostRedisplay(); // Redraw the scene 
    break; 
case GLUT_ACTIVE_CTRL: 
    cout << "CTRL pressed" << endl; 
    glutPostRedisplay(); // Redraw the scene 
    break; 
} 

回答

4

GLUT无法检测只是的按Ctrl。这个事实也暗示了这样一个事实,即对于Ctrl的“枚举数”不是GLUT_ KEY _CTRL,但是GLUT_ ACTIVE _CTRL。

然而,当按下另一个键可以查询的Ctrl状态:

case GLUT_KEY_RIGHT: 
    cout << "right key"; 
    if (glutGetModifiers() & GLUT_ACTIVE_CTRL) 
     cout << " w/Ctrl"; 
    cout << endl; 
    glutPostRedisplay(); // Redraw the scene 
    break; 

有关详细信息,请参阅documentation of glutGetModifiers()