Обработка клавиш клавиатуры
Пример знакомит как обрабатывать в программе нажатие клавиш клавиатуры, с применением зарезервированных имен клавиш в библиотеке <windows.h> и <glut.h>
В примере по нажатию клавиши Esc программа закрывается, по клавише символа "r" экран закрашивается красным цветом, по нажатию сочетания Alt+b экран закрашивается случайным цветом.
#include <windows.h>
#include <iostream>
#include "glut.h"
using namespace std;
#define xmax 10
#define xmin -10
#define ymax 10
#define ymin -10
void init()
{
glClearColor(1.0, 1.0, 1.0, 0.0);
gluOrtho2D(xmin, xmax, ymin, ymax);
}
void draw()
{
// очистка экрана цветом из буфера
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void Keybord(unsigned char key, int x, int y)
{
int mod;
mod = glutGetModifiers();
switch(key)
{
case VK_ESCAPE:
exit(0);
break;
case GLUT_KEY_UP:
case 'g':
glClearColor (0.0, 1.0, 0.0, 0.0);glutPostRedisplay();break;
case 'r':
glClearColor (1.0, 0.0, 0.0, 0.0);glutPostRedisplay();break;
case 'b':
if (mod==GLUT_ACTIVE_ALT)
{
glClearColor (rand()%100/100.0f, rand()%100/100.0f, rand()%100/100.0f, 0.0);
glutPostRedisplay();
break;
}
default: break;
}
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(150, 50);
glutInitWindowSize(800,600);
glutCreateWindow("Example Glut Keyboard Function");
init();
glutDisplayFunc(draw);
glutKeyboardFunc(Keybord);
glutMainLoop();
}
Для самостоятельной работы:
1. Введите обработку клавиш направления для изменения координат примитива.
2. Введите обработку клавиши F1 для вывода на экран сообщения помощи.
Приложение: Таблица кодов клавиш
Правая клавиатура при выключенной клавише NumLock: