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 :

contrôle des touches de direction en c


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut contrôle des touches de direction en c
    salut à tous! je suis un peu coincé et et j'ai besoin d'aide pour la suite de mon développement. en fait, je suis débutant en programmation C et j'ai besoin dans mon programme de contrôler les touches de direction. comment faire?
    merci de me donner des ficelles

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Tu es sous quel OS ?

    A priori je dirais va voir du côté de la lib ncurses pour gérer le clavier en mode "raw".

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 48
    Points
    48
    Par défaut
    Tu travailles en console ou avec une interface graphique ?

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Alors en mode console oui dirige toi vers ncurse.

    Si tu travail en visuel (fenetre et tout) dirige toi vers tout ce qui est WindowMessage (attention dépend probablement de l'OS).

    HK_UP, HK_DOWN, HK_LEFT, HK_RIGHT

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 68
    Points
    68
    Par défaut
    salut
    voici les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     -----------------Codes étendus-------------------
    0-(72) Haut
    0-(80) Bas
    0-(75) Gauche
    0-(77) Droite
    -------------------
    0-(-115) Ctrl-Haut
    0-(-111) Ctrl-Bas
    0-(115) Ctrl-Gauche
    0-(116) Ctrl-Droite
    ce sont pas des codes standards
    on teste si le 1ér bit égale a "0" si oui ,donc c'est un code étendu ,ensuite on va lire le 2éme bit .

    donc on va faire :

    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
     
     
    c=getch();
    	if(c==0)
    	{
    	  c=getch();
           switch(c)
    	{
    	  case 72 : ............ break;
     
    	  case 80 : ............ break;
               ...
    	   ...
               ...
    	  case -115 : ............... break;
               ...
    	   ...
               ...
             }
    voici un petit programme pour vérifier les codes que vous voulez :

    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
     
    #include<stdio.h>
    #include<conio.h>
     
    char c;
    void main()
    {
      clrscr();
     do
     {
      printf("\n\n\n\ttaper une touche:");
       c=getch();
       if(c!=0)
        {
          printf("\n\n\tla touche tapée a comme code standard %d",c);
          getch();
          clrscr();
         }
       else
        {
           c=getch();
          printf("\n\n\tla touche tapée a comme code étendu 0 - %d",c);
          getch();
          clrscr();
        }
      }
      while(c==27); //Esc
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 39
    Points : 47
    Points
    47
    Par défaut
    Bonjour !
    Oui, ces codes marchent très bien sous Windows avec la libraries conio.h, et on utilise la fonction getch().

    Mais sous Linux, c'est plus difficile... Vous parlez de la librairie ncurses, est-ce que vous pouvez expliquer brièvement comment faire dans ce cas ?

    Merci beaucoup d'avance

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 887
    Points : 219 339
    Points
    219 339
    Billets dans le blog
    123
    Par défaut
    Bonjour,

    ncurses ( ou pdcurses pour windows ) est une bibliothèque qui permet de faire des choses assez avancées dans un terminal.
    Sources utiles :
    Un example sur les évènements clavier: http://tldp.org/HOWTO/NCURSES-Progra...ml#SIMPLEKEYEX
    Et le HOWTO de ncurses ( sachant que pcurses c'est pareil ): http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/

    Il faudra dans une première partie initialiser la bibliothèque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    initscr(); // Demarre ncurses sur le terminal courant
    clear(); // Efface ce qu'il y avait avant ( simple :p )
    noecho(); // Si un touche est appyué, son caractère n'est pas affiché
    cbreak(); // Gestion des évènement ( voir doc pour les précisions )
    À la fin il faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    endwin(); // Ferme ncurse
    Une fois activé, tes affichages doivent ce faire avec ncurses (enfin c'est préférable je crois).
    Comme on le voit dans l'exemple, un simple getch() suffit. ( Bien sur on vérifie ce qu'il renvoie )
    ( Dans l'exemple c'est un wgetch() car ils utilisent une "fenêtre" )

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 39
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup ! Je vais pouvoir essayer ça.

Discussions similaires

  1. Contrôle des touches clavier
    Par kimserge dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/04/2013, 13h45
  2. Plus de flèche de direction si aperçu des touches à oui?
    Par electrosat03 dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/03/2009, 22h27
  3. Réponses: 5
    Dernier message: 23/10/2007, 10h59
  4. Detection des touches enfoncées par API
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 31
    Dernier message: 20/02/2006, 12h30
  5. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11

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