Ce projet n'est actuellement pas maintenu. Cela fonctionne dans de nombreux cas et je souhaite le reprendre à l'avenir, mais vous pourriez rencontrer des frictions et des fonctionnalités limitées en l'utilisant.
Prenez le contrôle total de votre clavier avec cette petite bibliothèque Python. Accrochez des événements globaux, enregistrez des raccourcis clavier, simulez des pressions sur des touches et bien plus encore.
ctrl+shift+m, ctrl+space
) avec délai d'attente contrôlable.Ctrl+ç
).pip install mouse
). Installez le package PyPI :
pip install keyboard
ou cloner le dépôt (aucune installation requise, les fichiers sources suffisent) :
git clone https://github.com/boppreh/keyboard
ou téléchargez et extrayez le zip dans le dossier de votre projet.
Consultez ensuite la documentation de l'API ci-dessous pour voir quelles fonctionnalités sont disponibles.
Utiliser comme bibliothèque :
import keyboard
keyboard . press_and_release ( 'shift+s, space' )
keyboard . write ( 'The quick brown fox jumps over the lazy dog.' )
keyboard . add_hotkey ( 'ctrl+shift+a' , print , args = ( 'triggered' , 'hotkey' ))
# Press PAGE UP then PAGE DOWN to type "foobar".
keyboard . add_hotkey ( 'page up, page down' , lambda : keyboard . write ( 'foobar' ))
# Blocks until you press esc.
keyboard . wait ( 'esc' )
# Record events until 'esc' is pressed.
recorded = keyboard . record ( until = 'esc' )
# Then replay back at three times the speed.
keyboard . play ( recorded , speed_factor = 3 )
# Type @@ then press space to replace with abbreviation.
keyboard . add_abbreviation ( '@@' , '[email protected]' )
# Block forever, like `while True`.
keyboard . wait ()
Utiliser comme module autonome :
# Save JSON events to a file until interrupted:
python -m keyboard > events.txt
cat events.txt
# {"event_type": "down", "scan_code": 25, "name": "p", "time": 1622447562.2994788, "is_keypad": false}
# {"event_type": "up", "scan_code": 25, "name": "p", "time": 1622447562.431007, "is_keypad": false}
# ...
# Replay events
python -m keyboard < events.txt
event.device == None
). #21/dev/input/input*
) mais cela nécessite root.keyboard
ne pourra pas signaler les événements.keyboard
via SSH, le serveur ne détectera pas vos événements clés. import keyboard
keyboard . add_hotkey ( 'space' , lambda : print ( 'space was pressed!' ))
# If the program finishes, the hotkey is not in effect anymore.
# Don't do this! This will use 100% of your CPU.
#while True: pass
# Use this instead
keyboard . wait ()
# or this
import time
while True :
time . sleep ( 1000000 )
import keyboard
# Don't do this! This will use 100% of your CPU until you press the key.
#
#while not keyboard.is_pressed('space'):
# continue
#print('space was pressed, continuing...')
# Do this instead
keyboard . wait ( 'space' )
print ( 'space was pressed, continuing...' )
import keyboard
# Don't do this!
#
#while True:
# if keyboard.is_pressed('space'):
# print('space was pressed!')
#
# This will use 100% of your CPU and print the message many times.
# Do this instead
while True :
keyboard . wait ( 'space' )
print ( 'space was pressed! Waiting on it again...' )
# or this
keyboard . add_hotkey ( 'space' , lambda : print ( 'space was pressed!' ))
keyboard . wait ()
import keyboard
# Don't do this! This will call `print('space')` immediately then fail when the key is actually pressed.
#keyboard.add_hotkey('space', print('space was pressed'))
# Do this instead
keyboard . add_hotkey ( 'space' , lambda : print ( 'space was pressed' ))
# or this
def on_space ():
print ( 'space was pressed' )
keyboard . add_hotkey ( 'space' , on_space )
# or this
while True :
# Wait for the next event.
event = keyboard . read_event ()
if event . event_type == keyboard . KEY_DOWN and event . name == 'space' :
print ( 'space was pressed' )
# Don't do this! The `keyboard` module is meant for global events, even when your program is not in focus.
#import keyboard
#print('Press any key to continue...')
#keyboard.get_event()
# Do this instead
input ( 'Press enter to continue...' )
# Or one of the suggestions from here
# https://stackoverflow.com/questions/983354/how-to-make-a-script-wait-for-a-pressed-key
press_and_release
)unblock_key
, unhook_key
, unremap_key
)register_hotkey
)clear_hotkey
, unregister_hotkey
, unremap_hotkey
)clear_all_hotkeys
, remove_all_hotkeys
, unregister_all_hotkeys
)replay
)register_word_listener
)remove_abbreviation
)register_abbreviation
) = 'down'
= 'up'
[source]
= { 'alt' , 'alt gr' , 'ctrl' , 'left alt' , 'left ctrl' , 'left shift' , 'left windows' , 'right alt' , 'right ctrl' , 'right shift' , 'right windows' , 'shift' , 'windows' }
= { 'alt' , 'ctrl' , 'shift' , 'windows' }
= '0.13.5'
[source]
Renvoie True si key
est un code d'analyse ou le nom d'une touche de modification.
[source]
Renvoie une liste de codes de scan associés à cette clé (nom ou code de scan).
[source]
Analyse un raccourci clavier fourni par l'utilisateur en tuples imbriqués représentant la structure analysée, les valeurs inférieures étant des listes de codes d'analyse. Accepte également les codes de numérisation bruts, qui sont ensuite enveloppés dans le nombre requis d'imbrications.
Exemple:
parse_hotkey ( "alt+shift+a, alt+b, c" )
# Keys: ^~^ ^~~~^ ^ ^~^ ^ ^
# Steps: ^~~~~~~~~~^ ^~~~^ ^
# ((alt_codes, shift_codes, a_codes), (alt_codes, b_codes), (c_codes,))
[source]
Envoie des événements du système d'exploitation qui exécutent le raccourci clavier donné.
hotkey
peut être soit un code de numérisation (par exemple 57 pour l'espace), une touche unique (par exemple « espace ») ou un raccourci clavier multi-touches et en plusieurs étapes (par exemple « alt+F4, entrée »).do_press
si vrai, les événements de presse sont envoyés. La valeur par défaut est True.do_release
si vrai, les événements de version sont envoyés. La valeur par défaut est True. send ( 57 )
send ( 'ctrl+alt+del' )
send ( 'alt+F4, enter' )
send ( 'shift+s' )
Remarque : les touches sont relâchées dans l'ordre inverse de celui dans lequel elles ont été enfoncées.
[source]
Appuie et maintient enfoncée une touche de raccourci (voir send
).
[source]
Libère un raccourci clavier (voir send
).
[source]
Renvoie True si la touche est enfoncée.
is_pressed ( 57 ) #-> True
is_pressed ( 'space' ) #-> True
is_pressed ( 'ctrl+space' ) #-> True
[source]
Appelle la fonction fournie dans un nouveau thread après avoir attendu un certain temps. Utile pour donner au système le temps de traiter un événement, sans bloquer le flux d'exécution en cours.
[source]
Installe un écouteur global sur tous les claviers disponibles, appelant callback
chaque fois qu'une touche est enfoncée ou relâchée.
L'événement passé au rappel est de type keyboard.KeyboardEvent
, avec les attributs suivants :
name
: une représentation Unicode du caractère (par exemple "&") ou de la description (par exemple "espace"). Le nom est toujours en minuscule.scan_code
: numéro représentant la clé physique, par exemple 55.time
: horodatage de l'heure à laquelle l'événement s'est produit, avec autant de précision que celle donnée par le système d'exploitation.Renvoie le rappel donné pour un développement plus facile.
[source]
Appelle callback
pour chaque événement KEY_DOWN. Pour plus de détails, voir hook
.
[source]
Appelle callback
pour chaque événement KEY_UP. Pour plus de détails, voir hook
.
[source]
Connecte les événements de clé vers le haut et vers le bas pour une seule clé. Renvoie le gestionnaire d'événements créé. Pour supprimer une clé accrochée, utilisez unhook_key(key)
ou unhook_key(handler)
.
Remarque : cette fonction partage l'état avec les raccourcis clavier, donc clear_all_hotkeys
l'affecte également.
[source]
Appelle callback
pour l'événement KEY_DOWN lié à la clé donnée. Pour plus de détails, voir hook
.
[source]
Appelle callback
pour l'événement KEY_UP lié à la clé donnée. Pour plus de détails, voir hook
.
[source]
Supprime un hook précédemment ajouté, soit par rappel, soit par la valeur de retour de hook
.
[source]
Supprime tous les crochets de clavier utilisés, y compris les raccourcis clavier, les abréviations, les écouteurs de mots, record
et les messages wait
.
[source]
Supprime tous les événements clés de la clé donnée, quels que soient les modificateurs.
[source]
Chaque fois que la touche src
est enfoncée ou relâchée, quels que soient les modificateurs, appuyez ou relâchez la touche de raccourci dst
à la place.
[source]
Analyse un raccourci clavier fourni par l'utilisateur. Contrairement à parse_hotkey
, au lieu que chaque étape soit une liste des différents codes de numérisation pour chaque touche, chaque étape est une liste de toutes les combinaisons possibles de ces codes de numérisation.
[source]
Appelle un rappel à chaque fois qu'une touche de raccourci est enfoncée. Le raccourci clavier doit être au format ctrl+shift+a, s
. Cela se déclencherait lorsque l'utilisateur maintiendrait ctrl, shift et "a" à la fois, relâcherait, puis appuierait sur "s". Pour représenter des virgules, des plus et des espaces littéraux, utilisez leurs noms (« virgule », « plus », « espace »).
args
est une liste facultative d'arguments à transmettre au rappel lors de chaque appel.suppress
définit si les déclencheurs réussis doivent empêcher l'envoi des clés à d'autres programmes.timeout
est le nombre de secondes autorisées à s'écouler entre les pressions sur une touche.trigger_on_release
si vrai, le rappel est invoqué lors du relâchement de la touche au lieu d'appuyer sur une touche. La fonction de gestionnaire d'événements est renvoyée. Pour supprimer un raccourci clavier, appelez remove_hotkey(hotkey)
ou remove_hotkey(handler)
. avant que l'état du raccourci clavier ne soit réinitialisé.
Remarque : les raccourcis clavier sont activés lorsque la dernière touche est enfoncée et non relâchée. Remarque : le rappel est exécuté dans un thread séparé, de manière asynchrone. Pour un exemple d’utilisation synchrone d’un rappel, consultez wait
.
Exemples :
# Different but equivalent ways to listen for a spacebar key press.
add_hotkey ( ' ' , print , args = [ 'space was pressed' ])
add_hotkey ( 'space' , print , args = [ 'space was pressed' ])
add_hotkey ( 'Space' , print , args = [ 'space was pressed' ])
# Here 57 represents the keyboard code for spacebar; so you will be
# pressing 'spacebar', not '57' to activate the print function.
add_hotkey ( 57 , print , args = [ 'space was pressed' ])
add_hotkey ( 'ctrl+q' , quit )
add_hotkey ( 'ctrl+alt+enter, space' , some_callback )
[source]
Supprime un raccourci clavier précédemment accroché. Doit être appelé avec la valeur renvoyée par add_hotkey
.
[source]
Supprime tous les raccourcis clavier utilisés, y compris les abréviations, les écouteurs de mots, record
et les messages wait
.
[source]
Chaque fois que vous appuyez sur la touche de raccourci src
, supprimez-la et envoyez dst
à la place.
Exemple:
remap ( 'alt+w' , 'ctrl+up' )
[source]
Construit une liste de tous les codes de numérisation actuellement enfoncés, les libère et renvoie la liste. Se marie bien avec restore_state
et restore_modifiers
.
[source]
Étant donné une liste de scan_codes, vous garantissez que ces touches, et uniquement ces touches, sont enfoncées. Se marie bien avec stash_state
, alternative à restore_modifiers
.
[source]
Comme restore_state
, mais restaure uniquement les touches de modification.
[source]
Envoie des événements de clavier artificiel au système d'exploitation, simulant la saisie d'un texte donné. Les caractères non disponibles sur le clavier sont saisis sous forme de caractères Unicode explicites à l'aide de fonctionnalités spécifiques au système d'exploitation, telles que alt+codepoint.
Pour garantir l'intégrité du texte, toutes les touches actuellement enfoncées sont relâchées avant la saisie du texte et les modificateurs sont restaurés par la suite.
delay
est le nombre de secondes à attendre entre les pressions sur une touche, par défaut aucun délai.restore_state_after
peut être utilisé pour restaurer l'état des touches enfoncées après la saisie du texte, c'est-à-dire en appuyant sur les touches qui ont été relâchées au début. La valeur par défaut est True.exact
force la saisie de tous les caractères en Unicode explicite (par exemple alt+codepoint ou événements spéciaux). Si aucun, utilise la valeur suggérée spécifique à la plateforme. [source]
Bloque l'exécution du programme jusqu'à ce que la touche de raccourci donnée soit enfoncée ou, si aucun paramètre ne lui est donné, bloque pour toujours.
[source]
Renvoie une représentation sous forme de chaîne du raccourci clavier à partir des noms de touches donnés, ou des touches actuellement enfoncées si elles ne sont pas fournies. Cette fonction :
Exemple:
get_hotkey_name ([ '+' , 'left ctrl' , 'shift' ])
# "ctrl+shift+plus"
[source]
Bloque jusqu'à ce qu'un événement clavier se produise, puis renvoie cet événement.
[source]
Bloque jusqu'à ce qu'un événement clavier se produise, puis renvoie le nom de cet événement ou, s'il est manquant, son code de numérisation.
[source]
Similaire à read_key()
, mais bloque jusqu'à ce que l'utilisateur appuie et relâche un raccourci clavier (ou une seule touche), puis renvoie une chaîne représentant le raccourci clavier enfoncé.
Exemple:
read_hotkey ()
# "ctrl+shift+p"
[source]
Étant donné une séquence d’événements, tente de déduire quelles chaînes ont été saisies. Les chaînes sont séparées lorsqu'une touche non textuelle est enfoncée (telle que tabulation ou entrée). Les caractères sont convertis en majuscules en fonction de l'état de décalage et de verrouillage des majuscules. Si allow_backspace
est True, les retours arrière suppriment le dernier caractère saisi.
Cette fonction est un générateur, vous pouvez donc transmettre un flux infini d'événements et les convertir en chaînes en temps réel.
Notez que cette fonction n'est qu'une heuristique. Windows, par exemple, conserve l'état du clavier par processus, tel que la disposition du clavier, et cette information n'est pas disponible pour nos hooks.
get_type_strings ( record ()) #-> ['This is what', 'I recorded', '']
[source]
Commence à enregistrer tous les événements du clavier dans une variable globale, ou dans la file d'attente donnée le cas échéant. Renvoie la file d'attente des événements et la fonction accrochée.
Utilisez stop_recording()
ou unhook(hooked_function)
pour arrêter.
[source]
Arrête l'enregistrement global des événements et renvoie une liste des événements capturés.
[source]
Enregistre tous les événements de clavier de tous les claviers jusqu'à ce que l'utilisateur appuie sur la touche de raccourci donnée. Renvoie ensuite la liste des événements enregistrés, de type keyboard.KeyboardEvent
. Se marie bien avec play(events)
.
Attention : il s'agit d'une fonction bloquante. Remarque : pour plus de détails sur le hook du clavier et les événements, voir hook
.
[source]
Lit une séquence d'événements enregistrés, en conservant les intervalles de temps relatifs. Si speed_factor est <= 0 alors les actions sont rejouées aussi vite que le système d'exploitation le permet. Se marie bien avec record()
.
Remarque : l'état actuel du clavier est effacé au début et restauré à la fin de la fonction.
[source]
Invoque un rappel chaque fois qu'une séquence de caractères est saisie (par exemple « animal ») et suivie d'une touche de déclenchement (par exemple, espace). Les modificateurs (par exemple alt, ctrl, shift) sont ignorés.
word
le texte saisi à faire correspondre. Par exemple, « animal de compagnie ».callback
est une fonction sans argument qui doit être invoquée à chaque fois que le mot est tapé.triggers
est la liste des clés qui entraîneront la vérification d'une correspondance. Si l'utilisateur appuie sur une touche qui n'est pas un caractère (len>1) et qui n'est pas dans les déclencheurs, les caractères jusqu'à présent seront ignorés. Par défaut, le déclencheur est uniquement space
.match_suffix
définit si les terminaisons des mots doivent également être vérifiées au lieu de uniquement les mots entiers. Par exemple, si c'est vrai, taper « tapis » + espace déclenchera l'écouteur de « animal ». La valeur par défaut est false, seuls les mots entiers sont vérifiés.timeout
est le nombre maximum de secondes entre les caractères saisis avant que le mot actuel ne soit supprimé. La valeur par défaut est 2 secondes. Renvoie le gestionnaire d'événements créé. Pour supprimer un écouteur de mots, utilisez remove_word_listener(word)
ou remove_word_listener(handler)
.
Remarque : toutes les actions sont effectuées avec la touche enfoncée. Les événements d'activation de clé sont ignorés. Remarque : les correspondances de mots sont sensibles à la casse .
[source]
Supprime un écouteur de mots précédemment enregistré. Accepte soit le mot utilisé lors de l'enregistrement (chaîne exacte), soit le gestionnaire d'événements renvoyé par les fonctions add_word_listener
ou add_abbreviation
.
[source]
Enregistre un raccourci clavier qui remplace un texte saisi par un autre. Par exemple
add_abbreviation ( 'tm' , u'™' )
Remplace chaque "tm" suivi d'un espace par un symbole ™ (et pas d'espace). Le remplacement se fait en envoyant des événements de retour arrière.
match_suffix
définit si les terminaisons des mots doivent également être vérifiées au lieu de uniquement les mots entiers. Par exemple, si c'est vrai, taper « tapis » + espace déclenchera l'écouteur de « animal ». La valeur par défaut est false, seuls les mots entiers sont vérifiés.timeout
est le nombre maximum de secondes entre les caractères saisis avant que le mot actuel ne soit supprimé. La valeur par défaut est 2 secondes. Pour plus de détails, voir add_word_listener
.
[source]
Étant donné un nom de clé (par exemple "LEFT CONTROL"), nettoyez la chaîne et convertissez-la en représentation canonique (par exemple "left ctrl") si elle est connue.