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 type event.name (type str). C’est cette classe qui doit s’occuper de détruire (instruction del) son gestionnaire d’événement afin de retrouver l’usage du clavier !

 

 

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.