keyboard
keyboard est un module tiers (qui n’est pas fourni avec les distributions de Python) permettant de gérer les claviers.
Il permet de prendre le contrôle total du clavier :
- accrocher des événements globaux,
- enregistrez des touches de raccourci,
- simulez des pressions de touches,
- …
Installation
Le module keyboard est disponible sur pypi.org.
Depuis une fenêtre de commande ou un terminal, ou encore certains IDE comme pyzo :
pip install keyboard
Utilisation
L’utilisation la plus courante est de définir un gestionnaire d’écoute d’événement (hook event handler ou event listener handler) : à chaque événement sur une touche (au choix : touche pressée, relâchée, …) une routine (appelée callback) est aussitôt lancée.
Plusieurs types d’événements sont « accrochables », en utilisant l’une des fonctions suivantes :
- appui sur une touche en particulier :
on_press_key
- relâchement d’une touche en particulier :
on_release_key
- appui ou relâchement d’une touche en particulier :
hook_key
dans ces trois cas, il faut préciser la touche concernée … - appui sur une touche quelconque :
on_press
- relâchement d’une touche quelconque :
on_release
- appui ou relâchement d’une touche quelconque :
hook
Dans tous les cas de figure, il faudra donner le nom de la fonction à exécuter (callback) lorsque l’événement se produira.
À la fin du programme, il est important de « décrocher » tous les événements : unhook_all
API complète : https://github.com/boppreh/keyboard#api
Exemples
Utilisation dans un programme
Un programme ayant besoin d’interagir avec l’utilisateur pourra utiliser le module keyboard
« autour » d’un boucle « infinie ».
import keyboard import time run = True def action_clavier(event): global run if event.name == 'q': run = False # les actions à réaliser suite à un appui sur une touche # ....... # On initialise l'écouteur d'événements clavier (ici : appui sur une touche) keyboard.on_press(action_clavier) while run: time.sleep(1) # les actions à réaliser périodiquement # ....... # On arrêter l'écouteur d'événements clavier keyboard.unhook_all()
Utilisation dans une classe
Un programme ayant besoin d’interagir avec l’utilisateur pourra utiliser un gestionnaire d’événement sous la forme d’un objet utilisé par une classe parente.
import keyboard class GestionnaireEvenements: def __init__(self, parent = None): # Classe qui exploite de gestionnaire d'événement self.parent = parent # On initialise l'écouteur d'événements clavier (ici : appui sur une touche) keyboard.on_press(self.action_clavier) def __del__(self): """ Méthode appelée automatiquement à la destruction de l'objet nécessaire pour arrêter l'écouteur d'événements clavier """ keyboard.unhook_all() def action_clavier(self, event): """ Callback lancé à chaque appui sur une touche """ if self.parent is not None: # On renvoie l'action à la classe parente self.parent.action_clavier(event.name) else: print(event.name) if __name__=="__main__": import time e = GestionnaireEvenements() while True: time.sleep(5)
Remarque : la classe parente, doit posséder une méthode
action_clavier
qui attend un argument de typeevent.name
(typestr
). C’est cette classe qui doit s’occuper de détruire (instructiondel
) son gestionnaire d’événement afin de retrouver l’usage du clavier !