Skip to main content

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keyboard-0.13.3.zip (69.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

keyboard-0.13.3.win-amd64.exe (650.4 kB view details)

Uploaded Source

keyboard-0.13.3-py2.py3-none-any.whl (58.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.13.3.zip.

File metadata

  • Download URL: keyboard-0.13.3.zip
  • Upload date:
  • Size: 69.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.9 CPython/3.6.4

File hashes

Hashes for keyboard-0.13.3.zip
Algorithm Hash digest
SHA256 d900fefc9c8dfc0c5d92bea6d6190a2ed9beea1bdbc0e16ce12a235bf5ef6281
MD5 f505691bd2473f33811627f55281a61c
BLAKE2b-256 eabff00decd3a10c55039d9036c9d698a6a59798f736db7b046af20e7e6fd02d

See more details on using hashes here.

File details

Details for the file keyboard-0.13.3.win-amd64.exe.

File metadata

  • Download URL: keyboard-0.13.3.win-amd64.exe
  • Upload date:
  • Size: 650.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.9 CPython/3.6.4

File hashes

Hashes for keyboard-0.13.3.win-amd64.exe
Algorithm Hash digest
SHA256 0fa2f6d5aa793270d97952d256fbd984091bdccd63a7e10127bd1a04e3f2ee71
MD5 e641eac4c67ccd99be034c66e8e0ec43
BLAKE2b-256 bf5e4c046b8f94e68af6b5b3fe7550a87370f68a168fbc2eff10f06f59172e32

See more details on using hashes here.

File details

Details for the file keyboard-0.13.3-py2.py3-none-any.whl.

File metadata

  • Download URL: keyboard-0.13.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 58.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.9 CPython/3.6.4

File hashes

Hashes for keyboard-0.13.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 18b53344408df1973c452549f47a203f20a0e65fbbd4436c72562759fa03c0b8
MD5 313b5268747786f540cfb17c93be02b7
BLAKE2b-256 8d14b7a8f46e750b5905b099f0ae164a00bc99fe2a3029b4d54ae978797d2c15

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page