Gestion du clavier
La gestion du clavier passera aussi par une définition de fonctions dans GLUT. GLUT interceptant tous les évènements clavier et appelant la fonction qui convient.
Je dis les fonctions car dans GLUT, il existe deux fonctions de gestion du clavier...
Une pour les touches spéciales comme F1, F2, ...
Une pour les touches normales càd celles pour lesquelles il existe un code ACSII.
Les touches ALT,
CTRL ou SHIFT ne sont pas traitées directement par ces fonctions. Il
faudra utiliser glutGetModifiers() lors de l'appel à l'une de nos fonctions.
Les combinaisons de
touches spéciales correspondant au système de fenêtres ne
sont pas interceptées.
Etat des touches ALT, CTRL et SHIFT
Pour ces touches, il faudra utiliser la fonction glutGetModifiers()
int glutGetModifiers ( void );
En entrée:
Rien
En sortie:
GLUT_ACTIVE_SHIFT Une des touches Shift ou CapsLock.
GLUT_ACTIVE_CTRL Touche Ctrl.
GLUT_ACTIVE_ALT Touche Alt.
Vous n'utiliserez
cette fonction que lors d'un appel à une fonction de gestion du clavier
ou de la souris.
Lecture des touches spéciales
Nous utiliserons la fonction glutSpecialFunc pour définir notre fonction de gestion des touches spéciales (càd les touches sans code ASCII correspondant).
void glutSpecialFunc ( void (*func) ( int key, int x, int y ));
En entrée:
func est le nom de notre fonction.
En sortie:
Rien !
Notre fonction recevra 3 paramètres qui sont:
key qui recevra une valeur GLUT_KEY_touche
x et y qui sont les coordonnées de la souris (en pixel) par rapport à la fenêtre courante.
Où key est le code de la touche interceptée dans la fenêtre courante !
Valeur | Désignation |
GLUT_KEY_Fn | Touche de fonctions F1 à F12 donc n est compris dans [1,12] |
GLUT_KEY_LEFT | Touche fléchée vers la gauche. |
GLUT_KEY_UP | Touche fléchée vers le haut. |
GLUT_KEY_RIGHT | Touche fléchée vers la droite. |
GLUT_KEY_DOWN | Touche fléchée vers le bas. |
GLUT_KEY_PAGE_UP | Touche page précédente (Page up). |
GLUT_KEY_PAGE_DOWN | Touche page suivante (Page down). |
GLUT_KEY_HOME | Touche Home. |
GLUT_KEY_END | Touche End. |
GLUT_KEY_INSERT | Touche d'insertion |
La valeur NULL pour
la fonction glutSpecialFunc désactive l'appel à notre fonction
de gestion des touches spéciales.
Lecture des touches normales
Càd les touches pour lesquelles un code ASCII existe. Pour installer notr efonction de gestion des touches "normales", nous utiliserons la fonction glutKeyboardFunc()
void glutKeyboardFunc ( void (*func) ( unsigned char key, int x, int y );
En entrée:
func est le nom de notre fonction.
En sortie:
Rien !
Notre fonction recevra 3 paramètres qui sont:
key qui recevra une valeur ASCII de la touche pressée. Où key est le code de la touche interceptée dans la fenêtre courante !
x et y qui sont les coordonnées de la souris (en pixel) par rapport à la fenêtre courante.
La valeur NULL pour
la fonction glutSpecialFunc désactive l'appel à notre fonction
de gestion des touches spéciales.