2014-02-07 4 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() для более подробной информации.