KEYPRESSED |
Touche enfoncé ? |
---|---|
Turbo Pascal 3+ | Crt |
Syntaxe
Function KeyPressed:Boolean; |
Retour
Valeur | Description |
---|---|
FALSE | Cette valeur permet d'indiquer qu'aucune touche n'est enfoncé |
TRUE | Cette valeur permet d'indiquer qu'au moins une ou plusieurs touches sont enfoncés |
Description
Cette fonction permet de vérifier si l'utilisateur appui actuellement sur une touche. Si aucune touche n'est pas présente dans le tampon de clavier, le programme continue sont exécutions et fait simplement retourner la valeur False.
Remarques
- La fonction KeyPressed est utilisé parce qu'il n'existe pas de programmation événementielle en Turbo Pascal, ainsi, il n'y a pas d'action déclenché lorsqu'on tape une touche au clavier, et le programmeur doit donc surveiller manuellement l'état de ce périphérique.
- ATTENTION ! Il ne faut pas oublier de télécharger la mise-à-jour de l'unité Crt de Borland car une division par 0 se produit avec des machines avec un microprocesseur de 2 GHz ou plus.
- Le ou les caractères sont laissés dans la mémoire tampon du clavier. La fonction KeyPressed ne détecte pas les touches majuscules telles que Shift, Alt, NumLock,... Si vous avez besoin de connaître cette information, vous devrez utiliser la cellule mémoire Mem[$0040:$0017]. On pourra tester l'état de ses touches de la façon suivante :
- Program HotKeySamples;
- BEGIN
- If Mem[Seg0040:$0017] and 1=1 Then WriteLn('Shift droite enfoncé')
- Else WriteLn('Shift droite relfché');
- If Mem[Seg0040:$0017] and 2=2 Then WriteLn('Shift gauche enfoncé')
- Else WriteLn('Shift gauche relfché');
- If Mem[Seg0040:$0017] and 4=4 Then WriteLn('Ctrl enfoncé')
- Else WriteLn('Ctrl relâché');
- If Mem[Seg0040:$0017] and 8=8 Then WriteLn('Alt enfoncé')
- Else WriteLn('Alt relâché');
- If Mem[Seg0040:$0017] and 16=16 Then WriteLn('ScrollLock activé')
- Else WriteLn('ScrollLock désactivé');
- If Mem[Seg0040:$0017] and 32=32 Then WriteLn('NumLock activé')
- Else WriteLn('NumLock désactivé');
- If Mem[Seg0040:$0017] and 64=64 Then WriteLn('CapsLock activé')
- Else WriteLn('CapsLock désactivé');
- If Mem[Seg0040:$0017] and 128=128 Then WriteLn('Insert activé')
- Else WriteLn('Insert désactivé');
- END.
Exemple
Voici un exemple de l'utilisation de cette fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
Presse n'importe quel touche pour continuer...le programme attend qu'on enfonce une touche, peu importe laquelle sans avoir besoin d'enfoncer ENTER et affiche :
Fin du programmeVoir également
Interruption 16h, Fonction 01h : Caractère en attente ?
Interruption 21h, Fonction 0Bh : Vérifier l'état d'entrée
Référence
Aide-mémoire de Turbo Pascal versions de 3 à 6, Edition Marabout, De Groote, Virga, 1992, ISBN: 2-501-01833-8, page 274.
Dernière mise à jour : Dimanche, le 25 janvier 2015