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 IDEIDE IDE (Integrated Development Environment) IDLE (Integrated DeveLopment Environment) (Environnement de Développement Intégré) En programmation informatique, un environnement de développement est un ensemble d'outils pour augmenter la productivité des programmeurs. Il comporte : un éditeur de texte destiné à la programmation, des fonctions qui permettent de démarrer le compilateur ou l'éditeur de liens un débogueur en ligne, qui permet d'exécuter ligne par ligne le programme en cours de construction. et parfois de nombreux outils (coloration syntaxique, exploration du code, détection d'erreurs, navigation, ....) Certains environnements sont dédiés à un langage de programmation en particulier. source : https://fr.wikipedia.org/wiki/Environnement_de_développement 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

APIAPI En informatique, une interface de programmation applicative ou API (Application Programming Interface) est un ensemble normalisé de classes, de méthodes ou de fonctions qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels. 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 = Evenements()
    while True:
        time.sleep(5)

 

 

 

Vous aimerez aussi...

Laisser un commentaire

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