[C] Lecture du code d'une touche appuyée

Lecture du code d'une touche appuyée [C] - C - Programmation

Marsh Posté le 18-10-2006 à 00:02:15    

Bonjour, je cherche à trouver, en C, sur quelle touche l'utilisateur a appuyé... du style getch() mais je voudrais pouvoir différentier l'appui sur F1 ou F2 par exemple... et je ne trouve pas de solution...
Help-me !

Reply

Marsh Posté le 18-10-2006 à 00:02:15   

Reply

Marsh Posté le 18-10-2006 à 00:26:38    

ezeta a écrit :

Bonjour, je cherche à trouver, en C, sur quelle touche l'utilisateur a appuyé... du style getch() mais je voudrais pouvoir différentier l'appui sur F1 ou F2 par exemple... et je ne trouve pas de solution...
Help-me !


Rien de portable. Quel système, quel compilateur ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 18-10-2006 à 00:31:12    

j'utilise dev-cpp sous Windows

Reply

Marsh Posté le 18-10-2006 à 10:57:32    

ezeta a écrit :

j'utilise dev-cpp sous Windows


Cet IDE n'est plus maintenu, je te conseille de le remplacer par Code::Blocks (même compilateur, mêmes DevPaks).
 
Tu as donc accès à la bibliothèque CONIO (Télécharger le DevPak si tu ne l'as pas)
 
Dans ce cas, le principe est simple. :
 

  • Le header est <conio.h>
  • getch() retourne le code ASCII des touches 'courantes'.
  • Si elle retourne 0 ou 244, il est possible qu'une touche 'étendue' ait été frappée. Pour le savoir, on regarde si un deuxière code est disponible dans le bugger clavier avec kbhit().
  • Si il y a un code disponible, on le lit avec getch(). Selon sa valeur, c'est une des touches étendues.


Petit programme illustrant ce fonctionnement. Je te laisse en tirer les conclusions qui s'imposent (je te conseille d'utiliser des constantes (UP, DOWN, LEFT, RIGHT etc.) dans ton application.

Code :
  1. #include <conio2.h>
  2. enum
  3. {
  4.    ESC = 27,
  5.    dummy
  6. };
  7. int main (void)
  8. {
  9.    int end = 0;
  10.    while (!end)
  11.    {
  12.       int c = getch ();
  13.       cprintf ("%4d", c);
  14.       switch (c)
  15.       {
  16.       case 0:
  17.          if (kbhit ())
  18.          {
  19.             c = getch ();
  20.             cprintf ("%4d", c);
  21.          }
  22.          break;
  23.       case 224:
  24.          if (kbhit ())
  25.          {
  26.             c = getch ();
  27.             cprintf ("%4d", c);
  28.          }
  29.          break;
  30.       case ESC:
  31.          end = 1;
  32.          break;
  33.       }
  34.       cprintf ("\n\r" );
  35.    }
  36.    return 0;
  37. }



Message édité par Emmanuel Delahaye le 18-10-2006 à 11:08:53

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed