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 :

detecter une touche du clavier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Par défaut detecter une touche du clavier
    J'aimerais que mon programme détecte les touche du clavier.
    mais je ne veux pas un truc bloquant comme scanf, il faut que mon programme detecte la touche a n'importe quel moment et ou qu'il soit(par exemple qu'il appele une fonction dès que j'appui sur telle ou telle touche)
    comment faire?

  2. #2
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Août 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2003
    Messages : 25
    Par défaut
    Tout ce que je sais c'est qu'avec ncurses tu peux paramétrer getch() pour qu'il soit non-bloquant. Il doit y avoir moyen de le faire avec conio.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Par défaut
    si getch devient non-bloquant, ca ne m'arrange pas des masses, parce que du coup il ne detectera pas la touche du clavier

  4. #4
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    OS ?
    GetKeyState + Thread devrait fonctionner.

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    kbhit()+getch() permet d'analyser les frappes clavier de manière non-bloquante.
    http://c.developpez.com/faq/c/?page=...ecoute_clavier

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Par défaut
    j'ai oublié de préciser que j'étais sous unix.
    mais ce qui m'interesse c'est surtout comment faire en th
    éorie.
    Lorqu'on appui sur un touche, un signal est emis au processus non? je pensais donc qu'il y avait peut etre moyen d'int
    eronpre la fonction en cours lorque un tel signal est emmis et d'appeller une autre fonction avant de revenir ou on etait.

  7. #7
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    sous unix, tu peux modifier les parametres de ton tty pour qu'il ne soit plus en "line buffered" : ton terminal attend que tu appuie sur enter pour envoyer tout ça.

    faire man termios.


    si tu veux travailler avec les vecteurs d'interruptions toussa, faut le faire en assembleur

    ---
    mince, grillé encore !

    et j'ai appris un truc, j'avais jamais vut cfmakeraw ...

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Par défaut
    Si c'est une appli win32 utilise le message WM_KEYDOWN exemple :

    dans la boucle des messages :

    if(messages.message == WM_SYSKEYDOWN && messages.wParam == VK_ESCAPE){
    /* actions */
    }


    Pour info VK_ESCAPE c'est la constante de la touche...excape mdr, pour avoir la liste va sur la msdn.

    Si c'est une appli console tu vas avoir du mal , car détecter a TOUT moment ce n'est pas possible à moin d'une boucle infinie avec getch() mais bon tu sera bloquer a un moment ou a un autre.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Par défaut
    ha sous unix... je peu rien pour toi :s

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Par défaut
    effectivement, j'aimerais m'en sortir sans faire de boucle infini

  11. #11
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Août 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2003
    Messages : 25
    Par défaut
    Citation Envoyé par deck_bsd
    Si c'est une appli win32 utilise le message WM_KEYDOWN
    Non il est sous un environnement Unix apparement.
    Moi sous linux, j'utilise ncurse. J'avais fais un Snake ( le jeu ) et j'utilisais getch() en mode non bloquant pour qu'a n'importe quel moment le joueur puisse changer de direction.

Discussions similaires

  1. Détection de l'appui sur une touche du clavier
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/12/2008, 02h08
  2. Réponses: 2
    Dernier message: 16/05/2006, 23h57
  3. Simuler l’appuie sur une touche du clavier
    Par Furius dans le forum C++
    Réponses: 2
    Dernier message: 26/09/2005, 17h15
  4. [CF][C#/PPC] Comment être à l'écouter d'une touche du clavier ?
    Par freddyboy dans le forum Windows Mobile
    Réponses: 6
    Dernier message: 18/05/2005, 17h32
  5. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31

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