Bonjour,
Comment detecter la touche escape ainsi que la touche fleche bas.
Le scan code de la touche escape est 0x1B
Le scan code de la touche fleche bas est 0x1B 0x5B 0x42
Contrairement a ce que j'ai vu sur le net les touches ne renvoi pas 0 quand c'est une touche étendue (F10, fleche haut, fleche bas ...), ca retourne 0x1B, du coup la touche Escape ne peut pas être détectée car il croit que c'est une touche étendue.
vous pouvez tester avec le code ci-dessous:
void loop()
{
int c;
c = Serial.read();
xprintf("%02X ", c);
delay(1);
}
le code suivant fonctionne mais je ne peut pas détecter la touche ESC:
pour KEY_DOWN et KEY_UP ca fonctionne mais pour la touche ESC je ne sais pas comment faire.
Les fonctions _kbhit() et _getch() encapsule le code serial qui fonctionne très bien, le problème ne vient pas de ces fonctions.
Il faut que tu expliques le contexte : quelle est la bibliothèque utilisée, quel hardware, quelle connexion, quel OS, etc ? Là, je n'y comprends rien...
J'utilise le VGA32 à base de ESP32, j'uitilise la bibliothèque fabgl avec arduino et le core ESP32.
je voudrais détecter les touches up, down, enter et escape, sur un menu en liste déroulante avec le terminal de la bibliothèque.
Mon problème est un problème de langage c sous arduino.
en fait le but est de tester la touche ESCAPE et aussi les touches DOWN et UP, mais comme j'utilise le code 0x1B (27) pour tester les touches étendues je ne peux pas tester seule la touche ESCAPE.
if (_kbhit())
{
key = _getch();
Serial.print(key); Serial.print(" "); Serial.println(key, HEX);
if (key == 0x1B)
{
_getch();
switch (_getch()) {
case KB_DOWN: itemno++; itemno %= nitems; break;
case KB_UP: if (itemno > 0) itemno--; else itemno = nitems - 1; break;
//case KB_ESC: _cursoron(); return 0;
}
} else if (key == KB_ENTER) {
return itemno + 1;
} else if (key == KB_ESC) { //<== ne passera jamais par ici car je teste le meme code pour les touches étendues
return 0;
}
}
il y a une facon, c'est de ne jamais utiliser la touche escape pour sortir par exemple mais utiliser la touche F10, mais ce n'est pas la solution idéale.
Je suppose qu'il y a au moins un programmeur sur la planète qui a déjà tester dans un menu la touche escape ainsi que d'autres touches de fonction étendue ?