DETECTER LES TOUCHES PRESSEES DU CLAVIER

g0belin Messages postés 155 Date d'inscription jeudi 6 décembre 2001 Statut Membre Dernière intervention 19 avril 2010 - 6 févr. 2002 à 20:56
 Utilisateur anonyme - 11 févr. 2006 à 03:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11674-detecter-les-touches-pressees-du-clavier

Utilisateur anonyme
11 févr. 2006 à 03:01
Salut,
pour le nombre magique :
{$EXTERNALSYM KF_UP}
KF_UP = $8000;
0+
Cirec
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
15 nov. 2004 à 18:24
«je comprend pas a koi sert 32768 svp»

Un entier est de type INTEGER. Mais souvent il est nécessaire de passer 2 nombres dans la même variable. Pour pouvoir réaliser ceci, il faut ruser. On déclare 3 entiers notés ix, et on définit i3 comme: "i3:=i1 or i2;"

On vient donc de combiner 2 entiers dans le 3ème. Pour savoir si i1 ou i2 sont contenus dans i3, on effectue un autre calcul (pas vraiment la réciproque):
if i3 and i1 = 0 then ShowMessage('i1 est dans i3')
else ShowMessage('i1 n''est pas contenu dans i3');

Dans le code de fabiin, la fonction GetAsyncKeyState renvoie une combinaison de nombres. Il effectue un test AND avec le nombre magique 32768 afin de savoir s'il est contenu dedans. Mais ce nombre vaut en réalité 0. Ho ???

C'est tout à fait normal. GetAsyncKeyState renvoie un SHORTINT comme résultat, mais version C++. C'est pas le même que Delphi (ce serait sinon -32768). En fait, c'est compliqué car SHORTINT(32768)=0 selon Delphi, mais en même temps, il est dit que SHORTINT=-32768..32767. Il y a une incohérence, mais vous devez bien voir le truc. Ici, 32768 dépasse les limites de sous-étendues de SHORTINT (32768>32767). Du coup, on reboucle un tour. Autre exemple: BYTE va de 0..255. Mais le nombre 256 vaut 0 en byte, 257 vaut 1, 258 vaut 2 ...etc. Une boucle !!

Et donc la présence ou non d'un 0 dit si une touche a été pressée ou non. Ou du moins, ça peut donner ce genre d'informations.

Sinon, une remarque: fabiin fait une boucle de 0 à 255 en revérifiant à chaque fois l'état du clavier. Mais il me semble qu'il existe une fonction qui renvoit l'état du clavier à un instant T via un tableau de longueur totale 256. Ensuite, il suffit juste de naviguer dedans. Je ne retrouve plus le nom... ou alors ça n'existe pas.
cs_subzero Messages postés 71 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 24 février 2012
3 mars 2004 à 23:02
Exact! En fait, on doit insérer un sleep et un Application.ProcessMessages pour éviter de saturer le cpu. Plus le delai de Sleep sera court, plus le proc sera solicité, à+
cs_gamez Messages postés 34 Date d'inscription samedi 14 juin 2003 Statut Membre Dernière intervention 27 janvier 2007
3 mars 2004 à 21:17
quand on appuye sur aucune toucheet quon attends, lutilisation du proc est au maximum à cause de la boucle, non?
cs_subzero Messages postés 71 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 24 février 2012
16 janv. 2003 à 20:33
Salut à tous, j'ai voulu faire la même chose! Là où j'ai été bloqué, c'est quand j'ai voulu les touches spéciales...
Si ça vous branche, allez voir le sujet "Touches de clavier en simultanné". C'est un clavier virtuel, qui marche avec un hook, c'est à dire qu'il est capable de fonctionner en arrière plan, et capture vraiement toutes les touches. J'ai intégré à l'archive, un programme pour déplacer le curseur de la souris avec les touches... à+
cs_Zynox Messages postés 11 Date d'inscription vendredi 4 octobre 2002 Statut Membre Dernière intervention 2 mars 2004
3 déc. 2002 à 18:00
oué c pas mal, seré tu faire la meem chose pr avoir le scancode ?
pour ski est de l utilisé ac un jeu oui, ms un jeu a 2 joueur sur le clavier ? ac multu touche tu seré modifier ?
pr le 32768 moi non plus je comprends pas ^^
creatix74 Messages postés 6 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 20 novembre 2002
31 oct. 2002 à 01:12
je comprend pas a koi sert 32768 svp
cs_anderson2 Messages postés 2 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 2 décembre 2002
19 oct. 2002 à 13:48
ouiais, vachement interessant, pour faire des jeux par exemple...
g0belin Messages postés 155 Date d'inscription jeudi 6 décembre 2001 Statut Membre Dernière intervention 19 avril 2010
6 févr. 2002 à 20:56
tres interessant comme source
Rejoignez-nous