Функция клавиатуры OpenGL и GLUT

Как я могу зарегистрировать нажатие клавиши CTRL? Следующий код работает для всех ключей, кроме CTRL:

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;
}

2

Решение

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;

Увидеть документация glutGetModifiers() Больше подробностей.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]