La gestion du clavier est aynchrone. Lorsque votre fenêtre graphique a le focus, les touches appuyées sont envoyées dans une file FIFO (First In Firt Out) en attente de traitement. La bibliothèque offre seulement deux fonctions.
int Touche();qui renvoie la première touche de la file (la fonction est bloquante si il n'y en a pas)
int ToucheEnAttente();qui renvoie 1 si une touche est présente dans la file et 0 sinon.
Dans le système X-Window, les touches sont codées à plusieurs niveaux. Au niveau le plus bas, chaque touche à un numéro entre 8 et 255. Ceci n'est pas modifiable, et dépend uniquement du serveur; donc pas très exploitable, puisque trop dépendant du type de clavier logique ou physique.
Aussi les touches sont-elles codées au niveau au-dessus sous
forme d'un entier non-signé qui établit une
correspondance entre la touche et sa signification. Grâce
à cette couche, on peut envisager différents types
d'alphabets (latin, hébreu, russe,...). Cette correspondance est
définie dans le fichier : /usr/include/X11/keysymdef.h
code dans [0xFF00,0xFFFF] | |
constante symbolique | Description |
touches de contrôles | |
XK_Tab |
tabulation |
XK_Return |
entrée |
XK_Pause |
|
XK_Escape |
échappe |
XK_Delete |
|
XK_Num_Lock |
|
XK_Left XK_Right XK_Up XK_Down |
flèches directionnelles |
touches modificatrices | |
XK_Shift_L |
Shift gauche |
XK_Shift_R |
Shift droit |
XK_Control_L |
|
XK_Control_R |
|
XK_Caps_Lock |
|
XK_Alt_L |
|
XK_Alt_R |
|
pavé numérique | |
XK_KP_Tab |
|
XK_KP_Enter |
|
XK_KP_F1 |
|
XK_KP_F2 |
|
XK_KP_F3 |
|
XK_KP_F4 |
|
XK_KP_Equal |
|
XK_KP_Multiply |
|
XK_KP_Add |
|
XK_KP_Substract |
|
XK_KP_Decimal |
|
XK_KP_Divide |
|
XK_KP_Separator |
|
XK_KP_0..XK_KP_9 |
code dans [0x0000,0x00FF] | |
constante symbolique | caractère |
XK_space |
|
XK_exclam |
! |
XK_quotedbl |
`` |
XK_numbersign |
# |
XK_dollar |
$ |
XK_percent |
% |
XK_ampersand |
& |
XK_quoteright |
' |
XK_parentleft |
( |
XK_parentright |
) |
XK_asterisk |
* |
XK_plus |
+ |
XK_comma |
, |
XK_minus |
- |
XK_period |
. |
XK_slash |
/ |
XK_0..XK_9 |
0..9 |
XK_colon |
: |
XK_semicolon |
; |
XK_less |
< |
XK_equal |
= |
XK_greater |
> |
XK_question |
? |
XK_at |
@ |
XK_a..XK_z |
a..z |
XK_A..XK_B |
A..Z |
XK_bracketleft ,XK_bracketright |
[ , ] |
XK_backslash |
\ |
XK_underscore |
_ |
XK_asciicircum |
^ |
XK_braceleft ,,XK_braceright |
{ , } |
XK_bar |
| |
XK_asciitilde |
~ |
Remarques
R
, il faut d'abord appuyer
sur shift
, puis sur la touche r
du clavier.
Il y aura donc deux codes dans la file, XK_Shfit_L
et XK_R
.