Les flèches en ASCII

Signaler
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Ben j'ai beau chercher, je n'ai pas trouver la correspondance des touches fléchées en ASCII, même avec les programmes qui donnent la correspondance des touches . Siouplé, aidez-moi !

25 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Salut,
Les touches fléchées n'ont pas de codes ASCII. Pour pouvoir les utiliser il faut récupérer leurs codes SCAN. Voici un source simple montrant comment retrouver les codes SCAN des touches qui n'ont pas de codes ASCII.
http://www.cppfrance.com/forum.v2.aspx?ID=284213
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Désolé je me suis trompé de lien. Voici le lien correct:
http://www.cppfrance.com/code.aspx?ID=26179
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

dsl sa marche pas sa se compile mais après il y a juste appuyez sur échap pour quitter et rien d'autre.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Tu dois appuyer sur une touche pour voir son code apparaitre. Tu tapes par exemple une touche fléchée puis son code s'affiche à l'écran.
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Je sais bien lol mais sa ne fait absolument rien j'ai pourtant apuyer sur toutes les touches du clavier mais rien. Ps je compile sous Borland 4.02 donc je ne serai pas étonné que cela vienne de là.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Normalement cà devrait marcher avec tous les compilateurs de Borland. Tu peux tester la valeur de retour de la fonction getch(), si c'est 0 (ou 224) alors c'est une touche non ASCII. On récupère son code SCAN en appelant une 2eme fois getch(). Tu travailles sur quel système d'exploitation? Quel Windows?
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Windows XP
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
et les touches F1-F12?
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Marchent pas non plus...
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
C'est bizarre, tu peux tracer le programme (debug) en l'exécutant pas à pas pour voir à chaque fois la valeur retournée par getch() ?
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

je sais pas où on voit la valeur retournée dsl par contre pour tracer c'est quoi c'est step over ou trace into (ou autre chose mais je vois pas quoi) en tout cas si c'est un des deux je les ai essayés.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Moi je travaille sur Visual C++ 6. Pour voir la valeur de "touche" on met juste le pointeur de souris dessus sans cliquer. On peut aussi ajouter le nom de la variable "touche" à la liste de la fenêtre d'affichage des contenus de variables pendant le debogage. Tu choisis "Step over" car "Trace into" entre dans le code interne de la fonction getch().
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Nan je vois vraiment pas où est la valeur retournée mais bon tant pis peux-tu juste me dire ce que je doit mettre après case pour utiliser les fèches directionnelles et aussi entrée parce que je n'y arrive pas ... sinon je compren pas pourquoi il y a dans le programme case (##): moi je mets toujours case '#': ou case # selon le contexte.
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

heu c'est bon j'ai compris pour la touche entrée. Maintenant il ne me reste plus qu'à avoir le code des flèches (si j'ai bien compris les parenthèses sont là parce que ce n'est pas de l'ASCII ni une constante par exemple on met '1' si on veut la touche 1, 13 si on veut la touche entrée (je vien de le voir sa) et (61) si on veut je ne sais quelle touche c'est sa ?)
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
A propos de "case" les parenthèses ne sont pas obligatoires. Pour utiliser les touches fléchées:
Flèche vers le HAUT : ASCII=0 (ou 224) , SCAN=72
Flèche vers le BAS : ASCII=0 (ou 224) , SCAN=80
Flèche vers la GAUCHE : ASCII=0 (ou 224) , SCAN=75
Flèche vers la DROITE : ASCII=0 (ou 224) , SCAN=77
Touche ENTREE : ASCII =13
Désolé de ne pas pouvoir rester plus longtemps. Je reviendrai dans quelques heures. Bonne programmation.
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

merci c'est super sympa je test tout de suite !!!
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Ouin j'arrive à rien lol en fait je ne sais pas vraiment quoi mettre :

a=getch();
switch (a)
{
case ????????: ....... //Je mets quoi là pour une flèche ?
........
}

M'enfin bon tant pis j'y vais je reviendrai plus tard.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
gogo les msdn....

de memoire, ça serai du
VK_
voir mm du
VK_ARROW_

genre
VK_ARROW_UP

++
Magic Nono: l'informagicien! 8-)
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
magic_Nono > pour utiliser les "VK_..." il faut avoir une fenêtre (ou boite de dialogue) dont la procédure gère les messages du genre "WM_KEYDOWN". Ce qui n'est pas valable pour une application console, car pas de fenêtre.
mage_des_enfers > pour récupérer le code SCAN d'une touche il faut faire 2 appels consécutifs de la fonction getch(). Normalement, cette fonction retourne le code ASCII de la touche tapée. Si cette dernière n'a pas de code ASCII alors getch() retourne 0 (ou 224). Le code SCAN reste dans le buffer clavier, il suffit de faire un second appel à getch() pour le récupérer sans avoir à taper de nouveau. Exemple:
a=getch(); // 1er appel
if (a==0 || a==224)
{
a=getch(); //2eme appel
switch(a)
{
case 72:
printf("Fleche vers le HAUT");
break;
case 80:
printf("Fleche vers le BAS");
break;
// autres cas....
}
}
Messages postés
24
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Sa marche pas mais au moins je sais d'où vient l'erreur : j'ai réalisé un petit programme bidon à partir de ta réponse :

#include
#include <conio.h>

int main(void){
while (1){
int a= getch(); // 1er appel
cout<<"A remarqué l'appui d'une touche.";
if (a ==0 || a==224)
{
a=getch(); //2eme appel
switch(a)
{
case 72:
cout<<"Fleche vers le HAUT";
break;
case 80:
cout<<"Fleche vers le BAS";
break;
}
}
}
return 0;
}

Lorsque je lance, l'appui d'une touche telle que entrée fait afficher "A remarqué l'appui d'une touche." mais pas la flèche. Donc tant qu'on appui sur la flèche, le code ne dépasse pas le premier getch(). Et même si le code est pas génial génial, ben au moins je sais ce qui ne va pas.