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 sends 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).
This program makes no attempt to hide itself, so don’t use it for keyloggers.
Usage
Install the PyPI package:
$ sudo pip install keyboard
or clone the repository (no installation required, source files are sufficient):
$ git clone https://github.com/boppreh/keyboard
Then check the API docs 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.')
# 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.
keyboard.wait()
Known limitations:
Events generated under Windows don’t report device id (event.device == None). #21
Linux doesn’t seem to report media keys. #20
Currently no way to suppress keys (‘catch’ events and block them). #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.
Metadata
Release files for keyboard 0.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| keyboard-0.11.0.zip | 48.7 kB | Without provenance | Details for keyboard-0.11.0.zip |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| keyboard-0.11.0.win-amd64.exe | Details for keyboard-0.11.0.win-amd64.exe | |||
| keyboard-0.11.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for keyboard-0.11.0-py2.py3-none-any.whl |
Total release size: 734.0 kB
Release files / keyboard-0.11.0.zip
| Download URL | keyboard-0.11.0.zip |
|---|---|
| Size | 48.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f9f2251dc76daa44bffc2568ad72eb807276393302ed4ccf2f35e7f393c81759
|
|
BLAKE2b-256 checksum How to use checksums |
c3a17bee30a56a7aa56a717ac959e64dd85030fedeb240425643cd480ae823d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / keyboard-0.11.0.win-amd64.exe
| Download URL | keyboard-0.11.0.win-amd64.exe |
|---|---|
| Size | 637.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f7e756dfc6cef083720c47de814356d3919b8193d4372bef0d32f44ce6f8c4fc
|
|
BLAKE2b-256 checksum How to use checksums |
914f203cc98c3617b2ecd4eeeb8f86446be7e1b0f4ae493da1ebc62db8b75de9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / keyboard-0.11.0-py2.py3-none-any.whl
| Download URL | keyboard-0.11.0-py2.py3-none-any.whl |
|---|---|
| Size | 48.2 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
d67dd0c8aa1feb7cad7a7efac6301889d2a99974979d997c7ff29c87d73cfa24
|
|
BLAKE2b-256 checksum How to use checksums |
73ef523b46398ce06577d7d65b869c6a151d7cc2ecde46082262caf43eb20ccd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for keyboard 0.11.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.