Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1577 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Attente de pression d'une touche + savoir quelle touche à été pressée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Attente de pression d'une touche + savoir quelle touche à été pressée

n°1272462
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 13:12:59  profilanswer
 

Bonjour tout le monde!
 
Bon alors sans plus attendre voici ma situation et ensuite mon problème : Je n'en suis pas à mes premiers pas en C/C++, en revanche j'en suis à mes premiers pas concernant l'interaction entre le programme et l'utilisateur.
 
Mon problème : Bon ce qu'est mon programme n'a pas d'intérêt pour la résolution du problème en question donc passons les lignes de codes. Ce que je cherche à faire, c'est mettre le programme en attente jusqu'à la pression d'une touche!
 
Attendez la suite avant de me frapper svp!
 
getch() ou getchar() me direz vous? Et bien non ce n'est pas ce que je cherche.... En fait je souhaiterais que l'utilisateur presse une (seule et unique) touche (n'importe laquelle et pas seuleument entrée) et qu'ensuite l'exécution du programme reprenne. Mais en plus de ça, je voudrais pouvoir connaitre quelle est la touche qui a été pressée.
 
Voilà!
Il s'agit d'un programme en mode console sur windows.
 
En vous remerciant par avance et vous priant de ne pas me frapper trop fort si mon topic est mal venu.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 23-12-2005 à 13:12:59  profilanswer
 

n°1272478
Elmoricq
Modérateur
Posté le 23-12-2005 à 13:31:50  profilanswer
 

Rien de portable, sous Windows tu dois avoir un kbhit() qui traine je crois.

n°1272480
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 13:34:01  profilanswer
 

ben, getch te permet de savoir quelle est la touche qui a été pressée
kbhit te sera utile si tu as des traitements à faire en attendant que l'utilisateur presse la touche, mais ca n'a pas l'air d'être le cas, au vu de ce que tu décris

n°1272496
durkheim
Posté le 23-12-2005 à 14:00:12  profilanswer
 

Oui, getch doit te tirer d'affaire. Regarde l'exemple dans la msdn.

n°1272512
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 14:31:53  profilanswer
 

Oui mais getch() n'attend pas seleument qu'une seule touche soit pressée, il faut également valider par entre la saisie et ce n'est vraiment pas ce qu'il me faut....
 
J'ais jetté un oeil sur l'exemple de la msdn, ce qu'ils donnent permet de faire du traitement jusqu'à ce qu'une touche soit pressée mais ne résoud pas mon problème ou alors j'ai pas bien fait attention.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1272515
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 14:37:03  profilanswer
 

dwogsi a écrit :

Oui mais getch() n'attend pas seleument qu'une seule touche soit pressée, il faut également valider par entre la saisie et ce n'est vraiment pas ce qu'il me faut....


Faux ... relis la doc

n°1272516
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 14:38:03  profilanswer
 

J'y vais de ce pas!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1272527
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 14:56:25  profilanswer
 

Bon j'ai vu des choses pour rendre gecth() non bloquant avec ncurses.h et nodelay() mais rien d'autre.....


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1272529
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 14:59:54  profilanswer
 

dwogsi a écrit :

Bon j'ai vu des choses pour rendre gecth() non bloquant avec ncurses.h et nodelay() mais rien d'autre.....


 
 
 :heink: fais un exemple applicatif minimal et reviens nous dire ce qui ne va pas avec getch ... parce que si ca ne colle pas à ce que tu cherches, c'est que ta requête était erronnée ...

n°1272533
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 15:03:44  profilanswer
 

Bon alors simplement:
ce que je constate (chez moi en tout cas) c'est que getch() stop l'exécution du programme et c'est ce qui me géne.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
mood
Publicité
Posté le 23-12-2005 à 15:03:44  profilanswer
 

n°1272535
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 15:05:47  profilanswer
 

donc, le problème n'est pas qu'il faut appuyer sur la touche entrée, CQFD ...
 
retour à la case départ : sous windows, tu as la fonction kbhit qui fait ce que tu souhaites

n°1272544
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 15:12:37  profilanswer
 

theshockwave a écrit :

donc, le problème n'est pas qu'il faut appuyer sur la touche entrée, CQFD ...


Peut être me suis-mal exprimé oui...
 
Concernant kbhit très bien ca renvoit 0 si pas de touhe pressée et 1 si touche pressée avec un while c'est ok pour attendre qu'une touche soit pressée, mais comment savoir laquelle a été pressée?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1272548
theshockwa​ve
I work at a firm named Koslow
Posté le 23-12-2005 à 15:15:12  profilanswer
 

Citation :

_kbhit
Requirements
<conio.h>
 
Checks the console for keyboard input.
 
int _kbhit( void );
Return Value
_kbhit returns a nonzero value if a key has been pressed. Otherwise, it returns 0.
 
Remarks
The _kbhit function checks the console for a recent keystroke. If the function returns a nonzero value, a keystroke is waiting in the buffer. The program can then call _getch or _getche to get the keystroke.


 
on ne sera pas toujours là pour te lire la doc, hein ...

n°1272549
dwogsi
Défaillance cérébrale...
Posté le 23-12-2005 à 15:17:30  profilanswer
 

Vraiment désolé, ça fait partie de ces choses que j'ais sous les yeux et que pourtant je ne vois pas. Encore pardon et merci bien :jap:


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Attente de pression d'une touche + savoir quelle touche à été pressée

 

Sujets relatifs
[PHP] comment coller un delai d'attente ?savoir si une socket C est encore connectée
page d'attentewxtextctrl et touche return
BufferedReader en attente pendant lecture socket[Resolu]redéfinir l'appuie sur la touche F1 en JS
L'écouteur Ne capte pas la touche Tabulationtouche verrnum sur PC portable
script shell - savoir si un processus est lancé[resolu par hasattr()]comment savoir si une variable existe ?
Plus de sujets relatifs à : Attente de pression d'une touche + savoir quelle touche à été pressée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR