Bonsoir ,
J'utilise un programme qui gère les flèches de direction du clavier (Haut, Bas, Gauche, Droite).
J'utilise _getch() pour récupérer la saisie, est-ce que quelqu'un a une idée svp ?car je n'ai pas trouvé sur le net.
Merci !
Bonsoir ,
J'utilise un programme qui gère les flèches de direction du clavier (Haut, Bas, Gauche, Droite).
J'utilise _getch() pour récupérer la saisie, est-ce que quelqu'un a une idée svp ?car je n'ai pas trouvé sur le net.
Merci !
Tu travailles sur quelle machine et avec quel système d'exploitation ? Parce que si c'est un Minitel en Videotex que tu exploites, par exemple, ce sera les codes 08, 09, 10 et 11 mais il est peu probable que ce soit ce que tu cherches. Donc, donne un maximum de détails.
Les touches du curseur ne font pas partie du code A.S.C.I.I. Tu auras donc bien du mal à les obtenir. Sur PC, on utilise traditionnellement les codes C.S.I. des terminaux D.E.C. (standard A.N.S.I.). Une séquence CSI, c'est « Esc [ » (1B 5B), suivis d'un certain nombres de code.
Pour le déplacement du curseur, c'est un nombre optionnel de pas (par défaut 1, donc jamais précisé par les touches du curseur) suivi de « A », « B », « C » ou « D » pour le haut, le bas, l'avant (donc droite) et l'arrière (donc gauche), respectivement.
Il y a donc trois caractères émis sur un PC chaque fois que l'on appuie sur une touche du curseur.
Merci pour ta réponse,
Ah ça parait compliquétou cela, moi j'utilise toujours ACII pour les touches comme (alphabets, ESC, ENTRER...) et ça marche bien.
Je développe sous windows en c++ sous visual studio 2008 .
ah je comprends, donc il faut gérer deux types d'ASCII si j'ai bien compris
Il n'y pas « deux types d'ASCII ». A.S.C.I.I. signifie « American Standard Code for Information Interchange » et concerne un jeu de caractères bien défini, à savoir les 128 premiers caractères de cette page (la table du haut). 128 et pas 255 car le bit de poids fort des octets lors des transmissions séries était un bit de parité.
Sur ces 128 caractères, les 32 premiers ne sont pas affichables car il s'agit de caractères de contrôle (c'est d'ailleurs l'origine de la touche Ctrl que l'on trouve sur pratiquement tous les ordinateurs). Ils servent aux retours à la ligne et autres, mais également à modifier l'état du terminal, faire un saut de page, etc. Le caractère « ESC » (Escape) signifie Échappement et est là, en principe pour indiquer que la séquence qui va suivre ne fait pas partie du flux ordinaire, mais est un ordre à l'intention du terminal.
Ça veut donc dire deux choses :
- L'ASCII est un jeu de caractères utilisé par 99,99% des ordinateurs de la planète. Y compris à travers des jeux de caractères plus récents tels que l'Unicode (à travers UTF-8) ou l'ISO-8859-1, qui sont « compatibles » dans leur majeure partie (leurs jeux commencent par les mêmes caractères) ;
- Il n'y a pas de code dédié aux touches du curseur, ce qui t'empêche de les lire directement, mais il y a une séquence de contrôle associée.
Il faut donc lire tous les caractères et vérifier s'ils forment une séquence connue, et agir en conséquence.
Si tu es en console, passe par une lib dédiée comme (n)curses/pdcurses.
En mode graphique, lis la doc du framework que tu utilises, tout cela sera déjà probablement supporté.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Partager