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ôler les saisies clavier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 : 39
    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 Contrôler les saisies clavier
    Salut!

    Je voudrais faire une sorte de traitement de texte sur terminal.
    Pour cela il me faudrait analyser les frappes clavier "en direct", caractère par caractère sans qu'il faille appuyer sur "entrée", dont je voudrais aussi contrôler l'utilisation.

    Je sais qu'il y a "getch" qui fonctionne bien mais n'est pas portable.

    Y a t'il un moyen de faire cela avec des fonctions "pure" C, officielles, dans la norme...

    Voila un pseudo-code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(a<=touche<=z)
    afficher touche
    if(touche=="entrée")
    aller à la ligne
    if(touche=="backspace")
    reculer d'un caractère
    Et idem avec les flèches directionnelle.

    Merci de vos réponses.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Je voudrais faire une sorte de traitement de texte sur terminal.
    Pour cela il me faudrait analyser les frappes clavier "en direct", caractère par caractère sans qu'il faille appuyer sur "entrée", dont je voudrais aussi contrôler l'utilisation.

    Je sais qu'il y a "getch" qui fonctionne bien mais n'est pas portable.

    Y a t'il un moyen de faire cela avec des fonctions "pure" C, officielles, dans la norme...
    C'est pas possible en C standard. Sous DOS/Windows, on s'en sort avec kbhit() et getch(). Dans la FAQ, on indique comment porter ces deux fonctions sous Unixoide... On peut donc écrire du code relativement portable à l'aide de ces deux fonctions.

    Attention, la saisie des fleches peut différer.

  3. #3
    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 : 39
    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
    Merci.

    C'est dommage, mais comment fait "getch" pour agir de la sorte, lire en direct, elle intercepte les signaux claviers?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Merci.

    C'est dommage, mais comment fait "getch" pour agir de la sorte, lire en direct, elle intercepte les signaux claviers?
    Sur PC/MS-DOS, c'est une fonction système qui lit directement le buffer clavier de la machine qui se trouve dans la zone de données du BIOS. Pour les détails, est ton ami...

    Sous Windows, c'est un bazar complexe qui reproduit le même mécanisme...

  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 : 39
    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
    OK, merci.

    Je vais donc rester sur getch.
    Mais est-ce vraiment necessaire d'utiliser "kbhit" avec?
    J'ai fait quelques tests sans tester si il y avait bien eut frappe sur le clavier qui "marchent".
    Quels sont les risques?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int n;
    while(1){
             n=getch();
             printf("%d",n);
             }

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Je vais donc rester sur getch.
    Mais est-ce vraiment necessaire d'utiliser "kbhit" avec?
    Ca sert à detecter les touches étendues. Il y a un exemple dans la FAQ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Contrôler les saisies des JTextField
    Par Relyss dans le forum Composants
    Réponses: 5
    Dernier message: 18/01/2010, 22h00
  2. Réponses: 2
    Dernier message: 07/11/2008, 16h34
  3. Réponses: 4
    Dernier message: 16/01/2008, 10h08
  4. Récuperer les saisies clavier dans un fichier texte?
    Par UnSofteuxAmateur dans le forum Delphi
    Réponses: 8
    Dernier message: 25/05/2007, 14h13
  5. Saisie clavier - séparer les arguments
    Par Tex-Twil dans le forum C
    Réponses: 12
    Dernier message: 17/10/2006, 15h51

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