kbhit en c++ ?

kbhit en c++ ? - C++ - Programmation

Marsh Posté le 12-06-2004 à 00:29:00    

Bonjour,  
je cherche s'il existe un équivalent de kbhit en c++.
cette fonction retourne une valeur différente de 0 si une touche a été pressé, 0 sinon.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 12-06-2004 à 00:29:00   

Reply

Marsh Posté le 12-06-2004 à 00:36:37    

mon but serait d'arriver a faire quelque chose comme ca en c++ :
 

Code :
  1. int main()
  2. {
  3. // boucle principale
  4. while(1)
  5. {
  6.  if(kbhit())
  7.  {
  8.   int c = getch();
  9.   // gestion de la saisie
  10.  }
  11.  // autres traitements à effectuer
  12. }
  13. }


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 12-06-2004 à 01:58:53    

ca doit rester portable ?
quel environnement ?

Reply

Marsh Posté le 12-06-2004 à 08:31:17    

Il faut faire appel à des interruptions système, ou mieux, X-Windows. Bref, à moins de fair une moche boucle avec un getch(), c'est pas portable.
 
http://www.dbforums.com/archive/in [...] 62178.html
 
Tu peux peut-être aussi regarder la FAQ XFree86 (ou son successeur).

Reply

Marsh Posté le 12-06-2004 à 09:27:29    

genre ni le C ni le C++ ne savent ce qu'est un clavier, alors vous pouvez chercher ....

Reply

Marsh Posté le 12-06-2004 à 10:09:05    

et genre Taz a deja donner 50000 fois une soluce propre.

Reply

Marsh Posté le 12-06-2004 à 11:59:33    

Ca m'intéresse...
 
Tiens d'ailleurs, il y a la même question pas loin, sur le topic "getcg et getkey".


Message édité par el muchacho le 12-06-2004 à 12:01:10
Reply

Marsh Posté le 12-06-2004 à 12:56:36    

http://forum.hardware.fr/forum2.ph [...] 545&cat=10
http://www.cppfrance.com/code.aspx?ID=10611
 
par contre sous windows avec kbhit et getch, les std::cout foire ompletement apres :/ ca ecrase le texte deja ecrit sur la console


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 12-06-2004 à 13:18:14    

DTC
 
la norme précise bien que par défaut stdio et iostream doivent être synchronisés ...
 

Code :
  1. #include <iostream>
  2. #include <cstdio>
  3. int main()
  4. {
  5. #ifdef SYNK
  6.         std::ios_base::sync_with_stdio(SYNK);
  7. #endif
  8.         std::cout << "plop";
  9.         std::printf("coin" );
  10. }


 


[13:17:29][pts/91][/tmp][#23]
benoit@athlon >>> g++_iso sync.cpp && ./a.out
plopcoin
[13:17:35][pts/91][/tmp][#24]
benoit@athlon >>> g++_iso -DSYNK=true sync.cpp && ./a.out
plopcoin
[13:17:42][pts/91][/tmp][#25]
benoit@athlon >>> g++_iso -DSYNK=false sync.cpp && ./a.out
coinplop


Message édité par Taz le 12-06-2004 à 13:18:50
Reply

Marsh Posté le 12-06-2004 à 13:45:16    

oui oui deja ca me faisait bizarre de mélanger du C et du C++ :/
 
par exemple getch prend en compte l'appui sur [tab], std::cin l'ignore
 
le problème venait du fait que l'appui sur la touche [entrée] correspond a \r pour getch, et pour faire un saut de ligne il faut faire std::cout << '\n';


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 12-06-2004 à 13:45:16   

Reply

Marsh Posté le 12-06-2004 à 13:48:47    

je sais pas, j'ai jamais utilisé getch :o
 
si getch te renvoie '\r' sur une [Entrée] c'est que c'est vraiment de la merde

Reply

Marsh Posté le 14-06-2004 à 11:06:50    

BlackGoddess a écrit :

oui oui deja ca me faisait bizarre de mélanger du C et du C++ :/
 
par exemple getch prend en compte l'appui sur [tab], std::cin l'ignore
 
le problème venait du fait que l'appui sur la touche [entrée] correspond a \r pour getch, et pour faire un saut de ligne il faut faire std::cout << '\n';


 
int getkey ()
  /* attend qu'une cle du clavier soit enfoncee et renvoie le
     code etendue du caractere correspondant (cf. keys.h)  */
{
  //declarations locales
  int  code;
  //actions
  while (!kbhit());
  code=getch();
  if (code equ 0) code=getch()+0x100;
  return code;
}
si tu veux utiliser ca il te faut ca  de preference apres:
# include <keys.h>
# "un conio complet pas celui de dev c++" http://tmk.jeuxcs.free.fr/prog/conio-bis.h


Message édité par blatty le 14-06-2004 à 11:08:37
Reply

Marsh Posté le 14-06-2004 à 14:08:17    

VC++ :

Citation :

test.cpp(1): fatal error C1083: Impossible d'ouvrir le fichier include : 'keys.h' : No such file or directory



---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 19-06-2004 à 22:40:58    

HelloWorld a écrit :

VC++ :

Citation :

test.cpp(1): fatal error C1083: Impossible d'ouvrir le fichier include : 'keys.h' : No such file or directory




! prends le !

Reply

Marsh Posté le 19-06-2004 à 22:41:37    

toi tu ferais bien de t'instruire sur ce qu'est un fichier.h ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed