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_clavierqui 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 !
