master210687
Messages postés2Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention29 mars 2007
-
29 mars 2007 à 13:15
goast_tu
Messages postés212Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention28 mai 2011
-
1 avril 2007 à 17:17
Bonjour,
j'ai un petit soucis : je souhaite effectuer une "instruction" particulière en fonction de la touche pressée au clavier.
J'ai donc créé ceci :
...
int touche;
touche=getch();
switch((int)touche) //j'ai été obligé d'ajouter un cast sinon ça ne fonctionne pas.
{
case 97:printf("touche a");break; //ça fonctionne
case 27:printf("ECHAP");break; //ça fonctionne
....
case 75:printf("touche gauche");break; //le code ASCI 75 n'est pas la touche gauche clavier
default:printf("default");
}
...
Je voudrais savoir s' il y a un code ASCI pour les touche gauche,droite,haut,bas et comment résoudre ce problème.
(J'ai créer un prgm pour me renvoyer les codes ASCI en fonction des touches tapées mais j'obtien 2 codes le premier étant toujours 224.)
master210687
Messages postés2Date d'inscriptionjeudi 29 mars 2007StatutMembreDernière intervention29 mars 2007 29 mars 2007 à 13:26
Bon finalement après quelques recherches j'ai pu trouver une solution à mon problème.
J'ai appris ceci :
Les touches F1 à F12 et les touches fléchées sont des touches qui, lorsque l'on appuie dessus, renvoient 2 codes l'un à la suite de l'autre. Ce sont ce que l'on appelle des touches étendues.
Pour gérer ce type de touches, il faut lire un premier caractère du buffer clavier, détecter qu'il s'agit d'un code de touche étendue, et relire un second caractère pour identifier la touche. Ce premier 'caractère' lu dépends du système et peut également varier selon les touches étendues (généralement il a la valeur 0 ou 224)
A noter que les codes étendus, c'est-à-dire celui qui vient en seconde position, est différent suivant les plate-formes.
Si toutefois vous avez des conseils à me donner n'hésitez pas.