Langage C : Scanf() et touche F1-F12

fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 - 1 mai 2004 à 17:22
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 - 2 mai 2004 à 19:32
Bnojour,
voila j'ai un probleme, je n'arrive pas à controler dans mon scanf() les touche F1 jusque F12, ququn pourrait-il me venir en aide car cela m'empeche d'avancer

exemple :
...
scanf("%d",&key);
if(key== ??????,) code ascii F1
vous avez appuier sur f1 par exemple

merci d'avance
A voir également:

15 réponses

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
1 mai 2004 à 18:25
heu scanf son pour les touches, F1 et Co ne compte pas comme des touches (enfin je crois).

sinon pour savoir les valeurs de <key> tu te fais un petit programme qui fais :
scanf("%d",&key);
printf("key=%d",key);

pour avoir les touche F1 et Co il faut faire bioskey(0) si tu est sous dos, sinon en Win32 tu recoit une message WM_KEY
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
1 mai 2004 à 22:20
si tu es sous Turbo C, tu peux simplement inclure le header
<conio.h> et utiliser la fonction getch()... tu l'utilise de la mm maniere ke getchar, c simple, et ca recup tt les touches mm f1, f2...

voila, bonne prog

++
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
1 mai 2004 à 22:22
J'ai dit une betise, je crois ke l'entete existe oci sous VC, mais etant donné kel est pas standar....Enfin bref, utilise TC++, c simple, clair et net, et en plus t sur de pouvoir utiliser getch...

++
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 1
2 mai 2004 à 13:11
ce que je cherche c'est comment le verifier, je ne trouve null part le code ascii des touche f1-f12 ce qui m'empeche d'avancer

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
2 mai 2004 à 13:22
Teste ce ptit code :

#include <stdio.h>
#include <conio.h>

int main ()
{
int iTouche = 0;

printf("Appuyer sur une touche F?\n");
iTouche = getch();
printf("Voici le code ascii de la touche pressee : %d\n", iTouche);

system("PAUSE");

return 0;

}
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
2 mai 2004 à 13:23
je viens de tester, ca me renvoie 0, mais j'ai compilé avec VC++6, ptet k'avec TC++, ca marchera, enfin je sais pas...
fartman2001 : il fodrait ke tu verifies si les touches Fx possèdent vraiment un code ascii

Je cherche ca, pui je te reposte la rep

++
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
2 mai 2004 à 13:30
je sais aps si ta lu mais JCDjcd ta donné la reponse a ton pb plus haut, relis...
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 1
2 mai 2004 à 13:57
ca me donne toujours 0;
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 1
2 mai 2004 à 13:58
il parait que pour les touche spéciale f1-f12 ya 2 code ascii (00,59) decimal pour f1, le probleme c'est je ne sait pas comment tester cela
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
2 mai 2004 à 14:15
et bioskey ca marche ?
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 1
2 mai 2004 à 14:18
bioskey(0) je vois pas commentl'utiliser en fait, j'ai essayer de le rajouter à celui que tu as fait mais donne 0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
2 mai 2004 à 16:31
pour les touches étendues (F1-F2, flèches..) getch() commence par envoyer 0 puis la fois suivante le scancode de la touche. Il faut donc faire:

char c = getch();
if(c==0)
{
c=getch();
// touche étendue
}
else
{
// touche normale
}
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 1
2 mai 2004 à 18:00
merci infiniment à tous surtout à ymca2003
voila ce que donne le code que je cherhais à faire si ca peut aider quelqu'un d'autre et cette adresse-ci contient la :table code ascii étendu 8-) :

#include<stdio.h>
#include<conio.h>

void main()
{
clrscr();
char c = getch();
if(c==0)
{
c=getch();
switch(c)
{
case 59 : printf("\nF1");break;
case 60 : printf("\nF2");break;
case 61 : printf("\nF3");break;
case 62 : printf("\nF4");break;
case 63 : printf("\nF5");break;
case 64 : printf("\nF6");break;
case 65 : printf("\nF7");break;
default : printf("erreur");
}
}
getch();
}
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
2 mai 2004 à 18:46
c'est quoi ce trucs ??
tu fais deux fois getch ?!?
fartman2001 Messages postés 22 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 24 février 2006 1
2 mai 2004 à 19:32
il faut faire 2 fois "c = getch();" car les touches étenues ont 2 code ascii exemple F1=(00,59). getch() commence par envoyer 0 puis la fois suivante le scancode de la touche étendue.
Rejoignez-nous