comment détecter la touche ECHAP en C?
j'ai écrit un bout de code pour détecter les touches de direction à l'aide de _getch();
et je souhaite détecter la touche echap mais je n'ai pas réellement savoir ce que sont les nombres que je devrais utiliser de sorte que toute aide est très appréciée.
#include <conio.h>
#include <stdio.h>
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
int c = 0;
_getch();
switch ((c = _getch())) {
case KEY_UP:
printf("Up\n");
break;
case KEY_DOWN:
printf("Down\n");
break;
case KEY_LEFT:
printf("Left\n");
break;
case KEY_RIGHT:
printf("Right\n");
break;
default:
printf("Null\n");
break;
chacun des touches de direction est une combinaison de deux caractères de code ascii 224 et l'définis (notez le premier _getch();
) mais je ne sais pas que pour la touche d'échappement, j'ai essayé de chercher mais pas trouver, une liste complète de ceux qui seraient si utiles.
Grâce.
- non merci
Vous devez vous connecter pour publier un commentaire.
Up,Down,Left,Right
est connu comme l'étendue de la clé et de les détecter, il faut lire DeuxChar
premier estNull
et le second est leASCII
code maisESC
n'est pas étendu clé, de sorte que vous pouvez le détecter avec un seulchar
.J'espère que ce code va vous aider à:
ESC est
27
en ASCII.Donc, vous voulez
#define ESC 27
et vérifier la valeur retournée par_getch
.Voici une table ASCII
Une solution générale à ce problème serait de simplement imprimer la valeur de c est réglé. De cette façon, n'importe quelle touche vous presse, vous pouvez obtenir la valeur de.
Je pense que vous confondez le
Esc
clé, le terme général de "séquence d'échappement", dans lequel une valeur particulière est utilisé pour indiquer que les valeurs qui suivent n'ont pas leur sens habituel - et souvent laESC
valeur27
est l'habitude de le faire, mais pas dans ce cas.Lorsque vous appuyez sur la Flèche (et d'autres non-impression des clés,
_getch()
retourne deux valeurs de consective appels. La première valeur est0
qui agit comme un caractère d'échappement pour indiquer que le prochain appel informera de la réelle touche enfoncée.Le code que vous avez posté ne permet pas de détecter les touches Fléchées, il détecte les touches
'H'
,'P'
,'K'
et'M'
, bien que je soupçonne que la première_getch()
était destiné à lire les0
échapper valeur.Lorsque j'exécute le programme suivant et appuyez sur les touches
1
,Up-arrow
,Esc
J'obtiens le résultat suivant:
Conclusion: je vous recommande de détecter
0
et ensuite avoir un imbriquéeswitch
déclaration de comprendre le non-impression de la touche a été pressée.