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 :

Select et descripteur clavier..


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 28
    Par défaut Select et descripteur clavier..
    Bonsoir à tous.

    Dans un client chat j'utilise la fonction select() qui me permet d'être bloqué à la fois sur un socket et sur le descripteur clavier.

    Actuellement mon select est débloqué si je reçois un message sur mon socket, ou si j'ai tapé du texte au clavier et que j'ai validé ('\r').

    J'aimerai que mon select soit débloqué à chaque caractère tapé au clavier (sans faire entrer).

    J'imagine que c'est possible mais pas moyen de trouver...

    Merci à vous !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Tu ne donnes pas assez d'info, ce que tu appelles le clavier c'est stdin ?
    Si oui alors ce n'est pas possible, la console est bufferisée (et le retour à la ligne c'est \n et non \r).

    On peut forcer le terminal avec tcsetattr() mais je ne suis pas sur de la portabilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct termios oldopts;
    struct termios newopts;
     
    tcgetattr(fileno(stdin), &oldopts);
    newopts = oldopts;
    newopts.c_lflag &= (~ICANON & ~ECHO);
    tcsetattr(fileno(stdin), TCSANOW, &newopts);

    Ou alors voir du coté de getch() et ncurses.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 28
    Par défaut
    C'est effectivement le descripteur stdin (0).

    Je vais essayer de voir avec les infos que tu m'as fournis.

    En tout cas merci pour ta réponse rapide !

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 28
    Par défaut
    J'ai essayé ta méthode, je pense que c'est la bonne voie mais je n'arrive pas à trouver les constantes du champ c_lflag qui pourraient correspondre à ce que je souhaite...

Discussions similaires

  1. Select, Option = Navigation clavier
    Par Sereine dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2012, 12h47
  2. Selection de descripteurs pour classification
    Par airballman dans le forum Traitement d'images
    Réponses: 15
    Dernier message: 25/05/2010, 16h57
  3. Selection au clavier dans une dropdownlist
    Par mcolo dans le forum C#
    Réponses: 7
    Dernier message: 13/11/2008, 16h33
  4. [JCOMBOBOX] selection au clavier.
    Par ganga dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 14/09/2006, 15h15
  5. Selection clavier sur liste déroulante
    Par Maxime_ dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 12/01/2006, 10h35

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