Dieses Projekt wird derzeit nicht gepflegt. Es funktioniert in vielen Fällen, und ich möchte es in Zukunft wieder aufgreifen, aber bei der Verwendung kann es zu Problemen und eingeschränkten Funktionen kommen.
Übernehmen Sie mit dieser kleinen Python-Bibliothek die volle Kontrolle über Ihre Tastatur. Binden Sie globale Ereignisse ein, registrieren Sie Hotkeys, simulieren Sie Tastendrücke und vieles mehr.
ctrl+shift+m, ctrl+space
) mit steuerbarem Timeout.Ctrl+ç
).pip install mouse
). Installieren Sie das PyPI-Paket:
pip install keyboard
oder das Repository klonen (keine Installation erforderlich, Quelldateien genügen):
git clone https://github.com/boppreh/keyboard
oder laden Sie die ZIP-Datei herunter und extrahieren Sie sie in Ihren Projektordner.
Sehen Sie sich dann die folgenden API-Dokumente an, um zu sehen, welche Funktionen verfügbar sind.
Nutzung als Bibliothek:
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 ()
Verwendung als eigenständiges Modul:
# 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*
), aber dafür ist Root erforderlich.keyboard
keine Ereignisse melden.keyboard
ausgeführt wird, erkennt der Server Ihre Tastenereignisse nicht. 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'
[Quelle]
= { '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'
[Quelle]
Gibt True zurück, wenn key
ein Scancode oder der Name einer Modifikatortaste ist.
[Quelle]
Gibt eine Liste der Scancodes zurück, die diesem Schlüssel zugeordnet sind (Name oder Scancode).
[Quelle]
Analysiert einen vom Benutzer bereitgestellten Hotkey in verschachtelte Tupel, die die analysierte Struktur darstellen, wobei die unteren Werte Listen von Scancodes sind. Akzeptiert auch rohe Scancodes, die dann in die erforderliche Anzahl von Verschachtelungen verpackt werden.
Beispiel:
parse_hotkey ( "alt+shift+a, alt+b, c" )
# Keys: ^~^ ^~~~^ ^ ^~^ ^ ^
# Steps: ^~~~~~~~~~^ ^~~~^ ^
# ((alt_codes, shift_codes, a_codes), (alt_codes, b_codes), (c_codes,))
[Quelle]
Sendet Betriebssystemereignisse, die den angegebenen Hotkey- Hotkey ausführen.
hotkey
kann entweder ein Scancode (z. B. 57 für Leerzeichen), eine einzelne Taste (z. B. „Leertaste“) oder ein mehrstufiger Hotkey mit mehreren Tasten (z. B. „Alt+F4, Eingabetaste“) sein.do_press
wenn true, dann werden Press-Ereignisse gesendet. Der Standardwert ist True.do_release
wenn true, dann werden Release-Ereignisse gesendet. Der Standardwert ist True. send ( 57 )
send ( 'ctrl+alt+del' )
send ( 'alt+F4, enter' )
send ( 'shift+s' )
Hinweis: Die Tasten werden in der umgekehrten Reihenfolge losgelassen, in der sie gedrückt wurden.
[Quelle]
Drückt und hält einen Hotkey gedrückt (siehe send
).
[Quelle]
Gibt einen Hotkey frei (siehe send
).
[Quelle]
Gibt True zurück, wenn die Taste gedrückt wird.
is_pressed ( 57 ) #-> True
is_pressed ( 'space' ) #-> True
is_pressed ( 'ctrl+space' ) #-> True
[Quelle]
Ruft die bereitgestellte Funktion in einem neuen Thread auf, nachdem einige Zeit gewartet wurde. Nützlich, um dem System etwas Zeit zur Verarbeitung eines Ereignisses zu geben, ohne den aktuellen Ausführungsfluss zu blockieren.
[Quelle]
Installiert einen globalen Listener auf allen verfügbaren Tastaturen und ruft jedes Mal callback
auf, wenn eine Taste gedrückt oder losgelassen wird.
Das an den Rückruf übergebene Ereignis ist vom Typ keyboard.KeyboardEvent
mit den folgenden Attributen:
name
: eine Unicode-Darstellung des Zeichens (z. B. „&“) oder der Beschreibung (z. B. „Leerzeichen“). Der Name ist immer kleingeschrieben.scan_code
: Zahl, die den physischen Schlüssel darstellt, z. B. 55.time
: Zeitstempel des Zeitpunkts, zu dem das Ereignis aufgetreten ist, mit der vom Betriebssystem vorgegebenen Genauigkeit.Gibt den angegebenen Rückruf zur einfacheren Entwicklung zurück.
[Quelle]
Ruft callback
für jedes KEY_DOWN-Ereignis auf. Einzelheiten finden Sie hook
.
[Quelle]
Ruft callback
für jedes KEY_UP-Ereignis auf. Einzelheiten finden Sie hook
.
[Quelle]
Verknüpft Key-Up- und Key-Down-Ereignisse für eine einzelne Taste. Gibt den erstellten Event-Handler zurück. Um einen Hakenschlüssel zu entfernen, verwenden Sie unhook_key(key)
oder unhook_key(handler)
.
Hinweis: Diese Funktion teilt den Status mit Hotkeys, daher wirkt sich auch clear_all_hotkeys
darauf aus.
[Quelle]
Ruft callback
für das KEY_DOWN-Ereignis auf, das sich auf den angegebenen Schlüssel bezieht. Einzelheiten finden Sie hook
.
[Quelle]
Ruft callback
für das KEY_UP-Ereignis auf, das sich auf den angegebenen Schlüssel bezieht. Einzelheiten finden Sie hook
.
[Quelle]
Entfernt einen zuvor hinzugefügten Hook, entweder durch Rückruf oder durch den Rückgabewert von hook
.
[Quelle]
Entfernt alle verwendeten Tastatur-Hooks, einschließlich Hotkeys, Abkürzungen, Word-Listener, record
und wait
.
[Quelle]
Unterdrückt alle Tastenereignisse der angegebenen Taste, unabhängig von Modifikatoren.
[Quelle]
Immer wenn die Taste src
gedrückt oder losgelassen wird, unabhängig von den Modifikatoren, drücken Sie stattdessen den Hotkey dst
oder lassen Sie ihn los.
[Quelle]
Analysiert einen vom Benutzer bereitgestellten Hotkey. Anders als bei parse_hotkey
ist jeder Schritt nicht eine Liste der verschiedenen Scancodes für jede Taste, sondern eine Liste aller möglichen Kombinationen dieser Scancodes.
[Quelle]
Ruft jedes Mal einen Rückruf auf, wenn ein Hotkey gedrückt wird. Der Hotkey muss das Format ctrl+shift+a, s
haben. Dies würde ausgelöst, wenn der Benutzer Strg, Umschalt und „a“ gleichzeitig gedrückt hält, loslässt und dann „s“ drückt. Verwenden Sie zur Darstellung von Kommas, Pluszeichen und Leerzeichen deren Namen („Komma“, „Plus“, „Leerzeichen“).
args
ist eine optionale Liste von Argumenten, die bei jedem Aufruf an den Rückruf übergeben werden.suppress
definiert, ob erfolgreiche Trigger das Senden der Schlüssel an andere Programme blockieren sollen.timeout
ist die Anzahl der Sekunden, die zwischen Tastendrücken vergehen dürfen.trigger_on_release
wahr ist, wird der Rückruf beim Loslassen der Taste statt beim Drücken der Taste aufgerufen. Die Event-Handler-Funktion wird zurückgegeben. Um einen Hotkey zu entfernen, rufen Sie remove_hotkey(hotkey)
oder remove_hotkey(handler)
auf. bevor der Hotkey-Status zurückgesetzt wird.
Hinweis: Hotkeys werden aktiviert, wenn die letzte Taste gedrückt und nicht losgelassen wird. Hinweis: Der Rückruf wird asynchron in einem separaten Thread ausgeführt. Ein Beispiel für die synchrone Verwendung eines Rückrufs finden Sie unter wait
.
Beispiele:
# 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 )
[Quelle]
Entfernt einen zuvor aktivierten Hotkey. Muss mit dem von add_hotkey
zurückgegebenen Wert aufgerufen werden.
[Quelle]
Entfernt alle verwendeten Tastatur-Hotkeys, einschließlich Abkürzungen, Wort-Listener, record
und wait
.
[Quelle]
Immer wenn der Hotkey src
gedrückt wird, unterdrücken Sie ihn und senden Sie stattdessen dst
.
Beispiel:
remap ( 'alt+w' , 'ctrl+up' )
[Quelle]
Erstellt eine Liste aller aktuell gedrückten Scancodes, gibt diese frei und gibt die Liste zurück. Lässt sich gut mit restore_state
und restore_modifiers
kombinieren.
[Quelle]
Anhand einer Liste von Scancodes wird sichergestellt, dass diese Tasten und nur diese Tasten gedrückt werden. Passt gut zu stash_state
, einer Alternative zu restore_modifiers
.
[Quelle]
Wie restore_state
, stellt jedoch nur Modifikatorschlüssel wieder her.
[Quelle]
Sendet künstliche Tastaturereignisse an das Betriebssystem und simuliert so die Eingabe eines bestimmten Textes. Zeichen, die auf der Tastatur nicht verfügbar sind, werden als explizite Unicode-Zeichen mithilfe betriebssystemspezifischer Funktionen wie Alt+Codepunkt eingegeben.
Um die Textintegrität sicherzustellen, werden alle aktuell gedrückten Tasten losgelassen, bevor der Text eingegeben wird, und Modifikatoren werden anschließend wiederhergestellt.
delay
ist die Anzahl der Sekunden, die zwischen Tastendrücken gewartet werden soll. Standardmäßig ist keine Verzögerung eingestellt.restore_state_after
kann der Zustand gedrückter Tasten wiederhergestellt werden, nachdem der Text eingegeben wurde, d. h. die Tasten werden gedrückt, die zu Beginn losgelassen wurden. Der Standardwert ist True.exact
erzwingt die Eingabe aller Zeichen als expliziten Unicode (z. B. Alt+Codepunkt oder besondere Ereignisse). Wenn „Keine“, wird der plattformspezifische vorgeschlagene Wert verwendet. [Quelle]
Blockiert die Programmausführung, bis der angegebene Hotkey gedrückt wird, oder blockiert sie für immer, wenn keine Parameter angegeben werden.
[Quelle]
Gibt eine Zeichenfolgendarstellung des Hotkeys aus den angegebenen Tastennamen oder den aktuell gedrückten Tasten zurück, falls nicht angegeben. Diese Funktion:
Beispiel:
get_hotkey_name ([ '+' , 'left ctrl' , 'shift' ])
# "ctrl+shift+plus"
[Quelle]
Blockiert, bis ein Tastaturereignis eintritt, und gibt dann dieses Ereignis zurück.
[Quelle]
Blockiert, bis ein Tastaturereignis eintritt, und gibt dann den Namen dieses Ereignisses oder, falls dieser fehlt, seinen Scancode zurück.
[Quelle]
Ähnlich wie read_key()
, blockiert jedoch, bis der Benutzer einen Hotkey (oder eine einzelne Taste) drückt und wieder loslässt, und gibt dann eine Zeichenfolge zurück, die den gedrückten Hotkey darstellt.
Beispiel:
read_hotkey ()
# "ctrl+shift+p"
[Quelle]
Versucht anhand einer Abfolge von Ereignissen abzuleiten, welche Zeichenfolgen eingegeben wurden. Zeichenfolgen werden getrennt, wenn eine nicht-textuelle Taste gedrückt wird (z. B. Tabulatortaste oder Eingabetaste). Je nach Shift- und Capslock-Status werden Zeichen in Großbuchstaben umgewandelt. Wenn allow_backspace
den Wert „True“ hat, wird durch Rücktasten das zuletzt eingegebene Zeichen entfernt.
Diese Funktion ist ein Generator, sodass Sie einen unendlichen Strom von Ereignissen übergeben und diese in Echtzeit in Zeichenfolgen umwandeln können.
Beachten Sie, dass es sich bei dieser Funktion lediglich um eine Heuristik handelt. Windows speichert beispielsweise den Status der Tastatur pro Prozess, beispielsweise das Tastaturlayout, und diese Informationen sind für unsere Hooks nicht verfügbar.
get_type_strings ( record ()) #-> ['This is what', 'I recorded', '']
[Quelle]
Beginnt mit der Aufzeichnung aller Tastaturereignisse in einer globalen Variablen oder in der angegebenen Warteschlange, falls vorhanden. Gibt die Ereigniswarteschlange und die Hook-Funktion zurück.
Verwenden Sie stop_recording()
oder unhook(hooked_function)
um zu stoppen.
[Quelle]
Stoppt die globale Aufzeichnung von Ereignissen und gibt eine Liste der erfassten Ereignisse zurück.
[Quelle]
Zeichnet alle Tastaturereignisse aller Tastaturen auf, bis der Benutzer den angegebenen Hotkey drückt. Anschließend wird die Liste der aufgezeichneten Ereignisse vom Typ keyboard.KeyboardEvent
zurückgegeben. Passt gut zu play(events)
.
Hinweis: Dies ist eine Sperrfunktion. Hinweis: Weitere Informationen zum Tastatur-Hook und zu Ereignissen finden Sie hook
.
[Quelle]
Spielt eine Folge aufgezeichneter Ereignisse ab und behält dabei die relativen Zeitintervalle bei. Wenn speed_factor <= 0 ist, werden die Aktionen so schnell wiedergegeben, wie es das Betriebssystem zulässt. Passt gut zu record()
.
Hinweis: Der aktuelle Tastaturstatus wird zu Beginn gelöscht und am Ende der Funktion wiederhergestellt.
[Quelle]
Ruft jedes Mal einen Rückruf auf, wenn eine Zeichenfolge eingegeben wird (z. B. „Haustier“), gefolgt von einer Auslösetaste (z. B. Leerzeichen). Modifikatoren (z. B. Alt, Strg, Umschalt) werden ignoriert.
word
den eingegebenen Text ein, der abgeglichen werden soll. ZB „Haustier“.callback
ist eine Funktion ohne Argumente, die jedes Mal aufgerufen wird, wenn das Wort eingegeben wird.triggers
ist die Liste der Schlüssel, die die Überprüfung einer Übereinstimmung bewirken. Wenn der Benutzer eine Taste drückt, die kein Zeichen ist (len>1) und nicht in Triggern enthalten ist, werden die bisherigen Zeichen verworfen. Standardmäßig ist der Auslöser nur space
.match_suffix
legt fest, ob statt nur ganzer Wörter auch Endungen von Wörtern geprüft werden sollen. Wenn dies beispielsweise der Fall ist, löst die Eingabe von „carpet“+Leerzeichen den Listener für „pet“ aus. Der Standardwert ist „false“, es werden nur ganze Wörter überprüft.timeout
ist die maximale Anzahl von Sekunden zwischen eingegebenen Zeichen, bevor das aktuelle Wort verworfen wird. Der Standardwert beträgt 2 Sekunden. Gibt den erstellten Event-Handler zurück. Um einen Wort-Listener zu entfernen, verwenden Sie remove_word_listener(word)
oder remove_word_listener(handler)
.
Hinweis: Alle Aktionen werden bei gedrückter Taste ausgeführt. Key-up-Ereignisse werden ignoriert. Hinweis: Bei Wortübereinstimmungen muss die Groß-/Kleinschreibung beachtet werden .
[Quelle]
Entfernt einen zuvor registrierten Wort-Listener. Akzeptiert entweder das bei der Registrierung verwendete Wort (genaue Zeichenfolge) oder den von den Funktionen add_word_listener
oder add_abbreviation
zurückgegebenen Ereignishandler.
[Quelle]
Registriert einen Hotkey, der einen eingegebenen Text durch einen anderen ersetzt. Zum Beispiel
add_abbreviation ( 'tm' , u'™' )
Ersetzt jedes „tm“, gefolgt von einem Leerzeichen, durch ein ™-Symbol (und kein Leerzeichen). Die Ersetzung erfolgt durch das Senden von Backspace-Ereignissen.
match_suffix
legt fest, ob statt nur ganzer Wörter auch Endungen von Wörtern geprüft werden sollen. Wenn dies beispielsweise der Fall ist, löst die Eingabe von „carpet“+Leerzeichen den Listener für „pet“ aus. Der Standardwert ist „false“, es werden nur ganze Wörter überprüft.timeout
ist die maximale Anzahl von Sekunden zwischen eingegebenen Zeichen, bevor das aktuelle Wort verworfen wird. Der Standardwert beträgt 2 Sekunden. Weitere Details finden Sie unter add_word_listener
.
[Quelle]
Bereinigen Sie bei gegebenem Schlüsselnamen (z. B. „LEFT CONTROL“) die Zeichenfolge und konvertieren Sie sie in die kanonische Darstellung (z. B. „left ctrl“), sofern eine solche bekannt ist.