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.

Image non trouvée !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.

Image non trouvée !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.

Image non trouvée !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



Image non trouvée !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.

 

Image non trouvée !La valeur NULL pour la fonction glutSpecialFunc désactive l'appel à notre fonction de gestion des touches spéciales.