Code ASCII touche directionelles C
Résolu
didy_gwatinik
Messages postés
352
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train de faire un programme en C, sous console et j'aimerai utiliser mes touches directionnelles, est-ce possible? Comment trouver le code de mes touches? J'ai vu sur différentes discussions qu'on parlait de système... mais je ne comprends pas très bien.
Je suis en train de faire un programme en C, sous console et j'aimerai utiliser mes touches directionnelles, est-ce possible? Comment trouver le code de mes touches? J'ai vu sur différentes discussions qu'on parlait de système... mais je ne comprends pas très bien.
A voir également:
- Code ascii flèche
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code blocks - Télécharger - Langages
13 réponses
Bonjour,
chaque touche de clavier est reconnue par son code ascci, alors tu peux identifier la touche par le test sur le code ascci , voilà un programme en C qui affiche le code ascci de la touche entré :
#include<stdio.h>
int main (void)
{ char c;
do{
printf("presser une touche de clavier");
scanf("%c",&c);
printf("Le code ascci de %c est %d",c,c);
}while(c!=0); // le programme se termine en tapant 0
getch();
return 0;
}
chaque touche de clavier est reconnue par son code ascci, alors tu peux identifier la touche par le test sur le code ascci , voilà un programme en C qui affiche le code ascci de la touche entré :
#include<stdio.h>
int main (void)
{ char c;
do{
printf("presser une touche de clavier");
scanf("%c",&c);
printf("Le code ascci de %c est %d",c,c);
}while(c!=0); // le programme se termine en tapant 0
getch();
return 0;
}
didy_gwatinik
Messages postés
352
Date d'inscription
Statut
Membre
Dernière intervention
80
Ca ne marche pas pour les touches directionnelles, chez toi si?
sur windows leur codes ascii c'est 224 suivis de quelque chose
gauche: 224 75
haut: 224 72
droite: 224 77
bas: 224 80
gauche: 224 75
haut: 224 72
droite: 224 77
bas: 224 80
Bonjour,
Voilà un petit programme simple qui m'a servi à identifier les touches : (thème reconnaissance de la touhe PF11, PF5 pour sortir)
Voilà un petit programme simple qui m'a servi à identifier les touches : (thème reconnaissance de la touhe PF11, PF5 pour sortir)
int main() { // Valeurs (codes ASCII) des principales touches du clavier. */ const int TOUCHE_ENTER = 13 ; const int TOUCHE_ECHAP = 27 ; const int TOUCHE_AJOUT = 82 ; const int TOUCHE_FLECHG = 75 ; const int TOUCHE_FLECHD = 77 ; const int TOUCHE_SUPPR = 83 ; const int TOUCHE_EFFACE = 71 ; const int TOUCHE_TABD = 9 ; const int TOUCHE_TABG = 8 ; const int TOUCHE_PAGTOP = 73 ; const int TOUCHE_PAGBOT = 81 ; const int TOUCHE_PF11 = 133 ; const int TOUCHE_PF12 = 134 ; const int TOUCHE_ABANDON_PFx = 63 ; signed int First_VAL_touches_PFx = 0 ; signed int VAL_touche_pressee = 0 ; while ( VAL_touche_pressee != TOUCHE_ABANDON_PFx ) // TOUCHE_ABANDON_PFx = 63 PF5 { //Lecture de la valeur identifiant un caractère ou une touche. VAL_touche_pressee = _getch () ; First_VAL_touches_PFx = VAL_touche_pressee ; // FILTRAGE DE LA NATURE DE LA TOUCHE PRESSEE if ( First_VAL_touches_PFx == 8 || First_VAL_touches_PFx == 9 || First_VAL_touches_PFx == 13 || First_VAL_touches_PFx == 27) { printf ("\n Vous avez pressé une touche autre que PF11 " "identifiée par 2 valeurs identiques %i et %i \n", First_VAL_touches_PFx, First_VAL_touches_PFx); } else { // FILTRAGE DE LA TOUCHE PF11 (codes ASCII 224 133). //0 ou 224 premières valeurs reçues identifiant une touche1 if ( First_VAL_touches_PFx == 0 || First_VAL_touches_PFx == 224 ) { // Lecture de la seconde valeur identifiant la touche activée. VAL_touche_pressee = _getch () ; //133 seconde valeur reçue identifiant précisément PF11 if ( VAL_touche_pressee != 133 ) { printf ("\n Vous avez pressé une touche autre que PF11 " "identifiée par les valeurs %i et %i \n", First_VAL_touches_PFx, VAL_touche_pressee); } else { printf ("\n\n Vous avez pressé la touche PF11 " "identifiée par les valeurs %i et %i \n\n", First_VAL_touches_PFx, VAL_touche_pressee); } } else { printf ("\n Vous avez pressé une touche caractère " "alphanumerique identifiée par la valeur : %i \n", First_VAL_touches_PFx); } } } return 0; }
voila j'ai fait un petit programme qui fait ce que tu veux a toi de l'adapter a ton menu
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { int a,b,position; printf("Menu\n"); printf("1- Choix 1\n"); printf("2- Choix 2\n"); printf("3- Choix 3\n"); position = 1; while((a=getch())==224) { b=getch(); if(b==80) if(position<3) position+=1; if(b==72) if(position>0) position-=1; } switch(position) { case 1: printf("Choix 1"); break; case 2: printf("Choix 2"); break; case 3: printf("Choix 3"); break; default: exit(-1); } }
Je l'ai adapté à mon code, ça marche très bien. Merci beaucoup. Je vais vous embêter encore un peu... Par soucis de visibilité pour l'utilisateur, je voudrai mettre un peu de couleur, autrement dit ma console est en noir et bleu, j'aimerai que l'utilisateur puisse voir sur quel champ il est par exemple je voudrai que le choix sans dans une couleur différente rouge par exemple. J'ai essayé de le faire mais e changement de couleur n'est pris en compte qu'une fois qu'on appuie sur Entrée, ça ne change pas la couleur du menu. Je ne vois pas à quel endroit il faut que j'inclus e changement de couleur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
changer la couleur du menu en temps reel je pense pas que ça soit faisable a moins que je me trompe...en tout cas je vois pas comment faire peut etre une solution serait d'effacer la console a chaque fois et de réafficher le menu
Existe t-il un moyen pour faire en sorte que il n'y ait pas besoin d'appuyer sur entrer sur valider la touche?
Je voudrais simuler un texte, par appuis touche (ou une autre méthode si vous avez) mais par cette methode, les caractère ` ne passe pas (AltGr+7)
ça doit ressembler un peu a ça
a=getchar(); if(a==224) { b=getchar(); if (b== //le chiffre apres 224 de la touche directionelle que tu veux) // tu fais le traitement }
ah ben la il y a pas de secret va falloir le calculer...
tu fais une boucle puis quand tu vois que c'est le code ascii de la fleche bas qui est sorti tu rajoute 1 a la position a laquelle tu est dans le menu quand c'est le code ascci de la fleche haut tu retire 1 a la position a la fin du a la position dans le menu
par exemple
tu fais une boucle puis quand tu vois que c'est le code ascii de la fleche bas qui est sorti tu rajoute 1 a la position a laquelle tu est dans le menu quand c'est le code ascci de la fleche haut tu retire 1 a la position a la fin du a la position dans le menu
par exemple
position =1; while((a=getchar())==224) { if((b=getchar())==80) position+=1; if((b=getchar())==72) position-=1; }bon pas sur que ce code marche exactement mais l'idee est là...
Pour afficher de la couleur en console, il faut utiliser <conio.h> sous visual C++ (ou sur d'autres IDE je sais pas)
Il y a :
https://openclassrooms.com/fr/courses (windows)
http://www.siteduzero.com/tutoriel-3-35298-des-couleurs-dans-la-console-linux.html (linux)
Pour mettre de la couleur en console (c'est en C mais ça marche en C++;) ) .
Il y a :
https://openclassrooms.com/fr/courses (windows)
http://www.siteduzero.com/tutoriel-3-35298-des-couleurs-dans-la-console-linux.html (linux)
Pour mettre de la couleur en console (c'est en C mais ça marche en C++;) ) .