pynput
pynput est un module tiers (qui n’est pas fourni avec les distributions de Python) permettant de gérer les périphérique d’entrée/sortie de type clavier et souris.
Il permet de prendre le contrôle total du clavier ou de la souris :
- accrocher des événements globaux,
- enregistrez des touches de raccourci,
- simulez des pressions de touches, des mouvement de souris, …
- …
Documentation complète de pynput
Installation
Le module pynput est disponible sur pypi.org.
Depuis une fenêtre de commande ou un terminal :
pip install pynput
Événements clavier
L’interaction avec le clavier est accessible dans le sous-module keyboard:
from pynput import keyboard
Pour écouter les événements « clavier », on créer une instance de Listener, à laquelle on indique la fonction à exécuter en cas d’événement :
listener = keyboard.Listener(on_press = touche_pressee)
L’argument on_press est de type function : la fonction à appeler lorsqu’une touche du clavier est pressée.
Ce type de fonction est appelée callback.
Le Listener doit ensuite être démarré, et à la fin du programme arrêté !
listener.start() ... # les événements claviers sont "écoutés" listener.stop()
Les fonctions callback doivent être définies avec un paramètre key de type keyboard.Key.
def touche_pressee(key):
...
L’objet key représente une touche de clavier.
- S’il s’agit d’une touche de caractère,
keypossède un attributchar, ce qui permet facilement de la comparer à un caractère. - S’il s’agit d’une touche spéciale, comme les touches de combinaison (↑ Maj, Ctrl, Alt, …), c’est l’attribut qui donne la touche :
exemples :Key.ctrl_l,Key.tab, …
Programme de démonstration
from pynput import keyboard
def touche_pressee(key):
if hasattr(key, 'char'): # il s'agit d'un caractère
print(key.char)
else:
print(key)
def touche_relachee(key):
print(key)
listener = keyboard.Listener(on_press = touche_pressee, on_release = touche_relachee)
listener.start()
continuer = True
while continuer: # boucle infinie (Ctrl+C pour quitter)
pass
listener.stop()
