begin process at 2013 05 21 16:58:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Périphériques

 > DETECTER LES TOUCHES PRESSEES DU CLAVIER

DETECTER LES TOUCHES PRESSEES DU CLAVIER


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Périphériques Niveau :Initié Date de création :25/11/2001 Vu :21 362

Auteur : fabiin

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Ce code permet de savoir si une touche du clavier ou un bouton de la souris est pressé, et renvoi le numéro ASCII de cette touche,...

Source

  • var
  • a: integer;
  • arret:boolean;
  • begin
  • arret:=false;
  • while Arret=False do begin
  • If (GetAsyncKeyState(27) And 32768) <> 0 Then arret:=true; // Action kan une touche précise est pressée (ici echape : 27)
  • For a := 0 To 255 do begin //scan les touches de 0 a 255(en général ca fait tou le clavier)
  • If (GetAsyncKeyState(a) And 32768) <> 0 Then begin
  • beep; //Action kan une touche est pressée
  • //a correspond au numéro ASCII de la touche pressé
  • //Button1.caption:=IntToStr(a);
  • end;
  • end;
  • application.ProcessMessages;
  • end;
  • ShowMessage('Fin');
  • end;
var
a: integer;
arret:boolean;
begin
  arret:=false;
  while Arret=False do begin

    If (GetAsyncKeyState(27) And 32768) <> 0 Then arret:=true; // Action kan une touche précise est pressée (ici echape : 27)

    For a := 0 To 255 do begin //scan les touches de 0 a 255(en général ca fait tou le clavier)
      If (GetAsyncKeyState(a) And 32768) <> 0 Then begin
        beep; //Action kan une touche est pressée
        //a correspond au numéro ASCII de la touche pressé
        //Button1.caption:=IntToStr(a);
      end;
    end;

      application.ProcessMessages;
  end;

ShowMessage('Fin'); 
end;



 Sources du même auteur

Source avec Zip CAPTUER LE SON SORTANT ET L'ENREGISTRER DANS UN FICHIER WAV
CALCUL D'UNE MOYENNE
CHANGER LA DURÉE D'AFFICHAGE DES BULLES D'AIDES (HINT)
Source avec Zip Source avec une capture ASCII-T : PETIT SOFT D'ASCII ART.
CHANGER CONTRASTE / LUMINOSIT&#201; (L'ALGORITHME)

 Sources de la même categorie

Source avec Zip Source avec une capture EXTRAIRE PÉRIPHÉRIQUE USB ( HOTPLUG ) par yanb
Source avec Zip Source avec une capture RETIRER LES PÉRIPHÉRIQUES USB par yanb
Source avec Zip CHARGER ET ENVOYER DES DONNÉES VIA L'USB par ldesmartin
Source avec Zip Source avec une capture GESTION DU CLAVIER G15 DE LOGITECH par delphitness
Source avec Zip ECHANGE EN USB par ldesmartin

Commentaires et avis

Commentaire de g0belin le 06/02/2002 20:56:09

tres interessant comme source

Commentaire de anderson2 le 19/10/2002 13:48:22

ouiais, vachement interessant, pour faire des jeux par exemple...

Commentaire de creatix74 le 31/10/2002 01:12:45

je comprend pas a koi sert 32768 svp

Commentaire de Zynox le 03/12/2002 18:00:19

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 ^^

Commentaire de subzero le 16/01/2003 20:33:54

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... à+

Commentaire de gamez le 03/03/2004 21:17:10

quand on appuye sur aucune toucheet quon  attends, lutilisation du proc est au maximum à cause de la boucle, non?

Commentaire de subzero le 03/03/2004 23:02:15

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é, à+

Commentaire de grandvizir le 15/11/2004 18:24:06

«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.

Commentaire de cirec le 11/02/2006 03:01:47 administrateur CS

Salut,
pour le nombre magique :
{$EXTERNALSYM KF_UP}
  KF_UP = $8000;
0+
Cirec

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

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 : 5,725 sec (3)

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