+
+
+
+
+ Hook and simulate keyboard events on Windows and Linux
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Project description
+ +
+
+
+ Take full control of your keyboard with this small Python library. Hook +global events, register hotkeys, simulate key presses and much more.
+
+
+Features
+-
+
- Global event hook on all keyboards (captures keys regardless of +focus). +
- Listen and send keyboard events. +
- Works with Windows and Linux (requires sudo), with +experimental OS X support (thanks @glitchassassin!). +
- Pure Python, no C modules to be compiled. +
- Zero dependencies. Trivial to install and deploy, just copy the +files. +
- Python 2 and 3. +
- Complex hotkey support (e.g. ctrl+shift+m, ctrl+space) with +controllable timeout. +
- Includes high level API (e.g. record and +play, +add_abbreviation). +
- Maps keys as they actually are in your layout, with full +internationalization support (e.g. Ctrl+ç). +
- Events automatically captured in separate thread, doesn’t block main +program. +
- Tested and documented. +
- Doesn’t break accented dead keys (I’m looking at you, pyHook). +
- Mouse support available via project +mouse (pip install mouse). +
+
+Usage
+Install the PyPI package:
+pip install keyboard ++
or clone the repository (no installation required, source files are +sufficient):
+git clone https://github.com/boppreh/keyboard ++
or download and extract the +zip into +your project folder.
+Then check the API docs +below to see what features +are available.
+
+
+Example
+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('@@', 'my.long.email@example.com') + +# Block forever, like `while True`. +keyboard.wait() ++
+
+
+ Known limitations:
+-
+
- Events generated under Windows don’t report device id +(event.device == None). +#21 +
- Media keys on Linux may appear nameless (scan-code only) or not at +all. #20 +
- Key suppression/blocking only available on Windows. +#22 +
- To avoid depending on X, the Linux parts reads raw device files +(/dev/input/input*) but this requries root. +
- Other applications, such as some games, may register hooks that +swallow all key events. In this case keyboard will be unable to +report events. +
- This program makes no attempt to hide itself, so don’t use it for +keyloggers or online gaming bots. Be responsible. +