begin process at 2012 05 28 21:47:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Comment savoir si une touche reste apuyée ou est lachée?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment savoir si une touche reste apuyée ou est lachée?

mardi 28 novembre 2006 à 17:02:09 | Comment savoir si une touche reste apuyée ou est lachée?

BS_C3

Bonjour!
Sauriez vous comment faire pour savoir si une touche est maintenue appuyée et quand est ce qu'elle est lachée?
Je programme du C sous DevC++ en mode console et rien d'autre.
Merci!!

mardi 28 novembre 2006 à 17:09:05 | Re : Comment savoir si une touche reste apuyée ou est lachée?

Joky

Membre Club
GetKeyState

ULARGE_INTEGERJokyQi=QI("Joky"

mardi 28 novembre 2006 à 17:28:43 | Re : Comment savoir si une touche reste apuyée ou est lachée?

BS_C3

Merci beaucoup Joky
dimanche 3 décembre 2006 à 22:54:46 | Re : Comment savoir si une touche reste apuyée ou est lachée?

BS_C3

Bonjour!
J'ai refait un test pour GetKeyState avec ce code:

  if(GetKeyState(VK_LEFT)<0)
  {
      while(GetKeyState(VK_LEFT)<0)
      {
      printf("Fleche gauche touchee une fois\n");
  }   
  }
  if(GetKeyState(VK_RIGHT)<0)   
  {
      while(GetKeyState(VK_RIGHT)<0)
      {
      printf("Fleche droite touchee une fois\n");
  }   

En utilisant ce test, quand j'appuie une fois sur la fleche droite ou gauche, les messages de test apparaissent pleeeeins de fois.
Comment corriger cela pour que ça n'arrive qu'une seule fois?
Merci!
lundi 4 décembre 2006 à 11:38:18 | Re : Comment savoir si une touche reste apuyée ou est lachée?

Joky

Membre Club
Donc quand on veut utiliser une fonction de l' API on se documente bien avant sur msdn par exemple

The GetKeyState function retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off-alternating each time the key is pressed).

SHORT GetKeyState(      

    int nVirtKey
);
Donc on voit que la fonction retourne un SHORT et qu'elle nous informe que l'état de la touche, enfoncée, relâchée, ou activée si la touche concernée et une touche du genre Maj ou Verr Num etc...

Return Value

The return value specifies the status of the specified virtual key, as follows:

  • If the high-order bit is 1, the key is down; otherwise, it is up.
  • If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.

Donc le bit de poids fort est à 1 si la touche est pressée
Sinon, elle est relâchée

Comment tester le bit de poids fort ???
un SHORT c'est codé sur 16 bits sur un système 32 bits ( les plus courants pour l'instant ) donc
1000 0000 0000 0000

Pour récupérer le bit de poids fort on fait
GetKeyState(VK_LEFT) & 0x8000
Et voilà, tu testes s'il est à 1 ou à 0

ULARGE_INTEGERJokyQi=QI("Joky"

mercredi 6 décembre 2006 à 00:26:47 | Re : Comment savoir si une touche reste apuyée ou est lachée?

BS_C3

Réponse acceptée !
Bonjour!
N'ayant pas reussi a faire avec le GetKeyState, j'ai trouve une autre méthode beaucoup plus simple: faire un double getch().
En declarant char key1 = getch() et char key2 = getch(), quand on appuie une fois sur une des touches "fleche", key1 va dire que la touche correspond a une fleche, key2 dira a quelle fleche cette touche correspond. C'est valable pour n'importe que touche spéciale (c'est à dire, toute touche non alphanumerique).
Voila! =)
Merci beaucoup pour votre aide


Cette discussion est classée dans : reste, touche, lachée, apuyée


Répondre à ce message

Sujets en rapport avec ce message

Comment détourner la touche entrée ? [ par Manson ] 'lut,Comment détourner la touche entrée d'une zone de texte en Visual C ?Thanx [BC++]getch() kbhit() Y EN A PAS UNE AUTRE?? [ par idk ] J'ai un probleme! existe t'il une fonction qui dit si une touche du clavier et pressé et en meme tmps qui prenne le code de cette touche?Un peu pres c Intercepter la touche ESC [ par mindark ] BonjourVoila, j'ai un programme qui execute une boucle d'environ 5 mins. Et je voudrais que cette boucle soit executee plusieurs fois, jusqu'a ce que gestion du clavier [ par Myts ] SalutJe programme sous TC++ (turbo c++) sous dos.Et j'ai un probleme concernant la gestion du clavier.Mon jeux, prochainement sur ce site, doit effect clavier : La touche Windows et la touche alt [ par bily ] Vegeta :-)Salut,je voudrais savoir comment a l'aide d'un boutton bloquer et debloquer la touche wndows en esperant que son raccourci "ctrl+echap" soie IMPORTANT CLAVIER WINDOWS BLOQUER [ par bily ] Vegeta :-)Salut,je voudrais savoir comment a l'aide d'un boutton bloquer et debloquer la touche wndows en esperant que son raccourci "ctrl+echap" soie bomberman avec turbo c++ [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peumais bon...Voici mon probleme :j'ai un projet pour la fin de l'annee: fair bomberman avec turbo c++ [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peumais bon...Voici mon probleme :j'ai un projet pour la fin de l'annee: fair Simuler la pression d'une touche du clavier [ par sebastienbro ] J'utilise c++ builder 6, et j'aimerais simuler la pression de la touche Entrée. Mais voilà, comment faire !! Existe t'il une fonction qui fait ça auto ctrl+alt+del et touche alt coriace !!! [ par vdox05 ] J' ai vu que sur ce site des sources donnaient des astuces pour enlever le ctrl+alt+del mais je les ai toutes testées et aucune ne marche .J' ai eut q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales