équivalent de conio.h pour kbhit() sous linux ?

capunk Messages postés 4 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003 - 8 déc. 2003 à 13:44
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 8 déc. 2003 à 20:46
J'ai posé une question un peu plus loin "comment gérer un sleep et une saisie en meme temps". on m'a dit d'utiliser kbhit() de la la librairie conio qui renvoie 1 quand une touche du clavier est pressée . Seulement conio.h n'est pas fourni avec le compilateur c++ de base fournit avec linux!! Or mon projet est a faire sous linux!!

Ma question : "y'a t'il un équivalent de kbhit() dans une des libraires fournies avec linux (mandrake9.1) ?"
Merci d'avance pour vos nombreuses (... j'espères!) réponses !! ;)

4 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 déc. 2003 à 13:51
a scuz, j'ai vu ds le precedent poste que t'avai dit que tu etait sous linux et je l'ai zappé

essaye getchar() de la stdio qui je croi fonctionne comme getch() ou getche() mais je suis pas sur
0
Viper31 Messages postés 96 Date d'inscription mardi 2 avril 2002 Statut Membre Dernière intervention 7 août 2005
8 déc. 2003 à 19:52
Mais le probleme avec getch / getche et getchar , c que ca va bloké jusqu a ce que un caractere soit tappé !!

capunk , essaye de le faire avec conio.c .... sur Dev-C++ sous windows , ya pas conio.h , mais ya conio.c ...
0
Viper31 Messages postés 96 Date d'inscription mardi 2 avril 2002 Statut Membre Dernière intervention 7 août 2005
8 déc. 2003 à 19:53
Scuse j'ai dit une grosse connerie .... Mea Culpa
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 déc. 2003 à 20:46
tu peu le faire avec un select
#include <sys/time.h>
#include <sys/types.h>
#include <sys/select.h>

...

fd_set fd;
FD_ZERO(&fd);
FD_SET(0,&fd); // ajout de l'entrée standard
// dans l'ensemble de descripteurs
struct timeval t={2,0}; // timeout de 2 sec
select(20,&fd,NULL,NULL,&t);

en gros le select est interrompu si une touche est appuyé ou au bout de 2 sec, pour savoir si il a ete interropue a cause de l'appuye sur une touche, tu fait:
if(ISSET(0,&fd)) // une touche a ete apuye

cependant je suis pas sur que ca marche
0
Rejoignez-nous