IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Utilisation des flèches du clavier


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 25
    Points : 22
    Points
    22
    Par défaut Utilisation des flèches du clavier
    Bonjours,
    Je suis assez jeune dans le domaine de la programmation et comme la plupart des jeunes il y a quelque chose que je n'arrive pas à comprendre/exploiter.
    Voilà j'ai créé un simple programme me retournant le code héxa histoire d'obtenir celui des flèches afin de pouvoir réutiliser cela dans mes programmes avenir car ZSQD commence à faire négligé dans mes programmes.
    Voici mon code:
    #include <stdio.h>
    #include <conio.c>

    int main()
    {
    unsigned char touche;
    while(1)
    {
    touche=getche();
    printf(" => %x\n", touche);
    }
    return 0;
    }
    Jusqu'à cet endroit aucun problème mais au moment de lancer le programme les codes obtenus pour les caractères basiques coinside:
    a => 61
    mais pour la flèche de gauche par exemple cela me donne:
    ù => e0
    => 50
    Je ne sait pas du tout comment exploiter cela, quelqu'un de plus compétant que moi peut-il éclairer ma lenterne?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Bonjour,

    Je sais que sous UNIX, alors que les lettres envoyent une sequence d'un char, d'autres touches comme les fleches par exemple envoyent 1 sequence de 3 chars (genre 21 79 68 pour la fleche gauche). Peut etre que ca t'aidera, personellement je n'utilise pas getche() (je n'y ai pas le droit dans mon ecole) mais le bon vieux read(0, ...) donc je ne peux pas t'aider plus que ca.

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par yenlui
    Voilà j'ai créé un simple programme me retournant le code héxa histoire d'obtenir celui des flèches afin de pouvoir réutiliser cela dans mes programmes avenir car ZSQD commence à faire négligé dans mes programmes.
    Si tu ne connais pas le mécanisme de touches étendues, tu ne peux pas le deviner... (mais on trouve l'info sur le net)

    Les touches 'normales' envoient 1 caractère, les touches étendues en envoient 2. Le premièr est soit 0 soit 224.

    On teste comme ça (Windows XP):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    int c = getch();
     
    if (c == 0 || c == 224)
    {
       if (kbhit ())
       {
          c = getch(); /* touche etendue */
       }
       else 
       {
          /* touche normale ( 0 ou 224) */
       }
    }
    else
    {
       /* touche normale (sauf 0 et 224) */
    }
    Voilà un petit programme qui te permettra de découvrir tous les codes du clavier (Code::Blocks/MingGW avec le DevPak conio) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #include <conio2.h>
     
    int main(void)
    {
       int end = 0;
     
       while (!end)
       {
          int c = getch();
     
          if (c == 0 || c == 224)
          {
             if (kbhit ())
             {
                if (c == 0)
                {
                   c = getch(); /* touche etendue */
                   cprintf ("EXT c =   0.%d\n", c);
                }
                else
                {
                   c = getch(); /* touche etendue */
                   cprintf ("EXT c = 224.%d\n", c);
                }
             }
             else
             {
                /* touche normale ( 0 ou 224) */
                cprintf ("NRM c = %d\n", c);
             }
          }
          else
          {
             /* touche normale (sauf 0 et 224) */
             cprintf ("NRM c = %d\n", c);
             end = c == 27; /* ESC */
          }
       }
     
       return 0;
    }
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/07/2009, 01h28
  2. Utilisation des flèches
    Par YUJ1RO dans le forum C++
    Réponses: 6
    Dernier message: 23/04/2009, 11h27
  3. Réponses: 3
    Dernier message: 06/12/2007, 12h01
  4. Utilisation des flèches du clavier
    Par Pingu1 dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 03/06/2007, 18h03
  5. Utilisation des flèches gauche et droite sous IE
    Par effiix dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/02/2007, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo