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 sends keyboard events.

  • Works with Windows and Linux (requires sudo).

  • 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 coming soon.

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.

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.9.13.zip (40.1 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.9.13.win-amd64.zip (89.8 kB view details)

Uploaded Source

keyboard-0.9.13.win-amd64.exe (630.6 kB view details)

Uploaded Source

keyboard-0.9.13-py2.py3-none-any.whl (36.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.9.13.zip.

File metadata

  • Download URL: keyboard-0.9.13.zip
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for keyboard-0.9.13.zip
Algorithm Hash digest
SHA256 a381159994d76fed5e3bc696237b44932c57a65600467e54baf87a8b3663f1ea
MD5 c5635102bd1fda3e9c6aa3dc1b1b74dc
BLAKE2b-256 dc553575aaca7a27e0408774fbaf142ff0fe099ac10aee8ccf8e4f3e5c53bd1e

See more details on using hashes here.

File details

Details for the file keyboard-0.9.13.win-amd64.zip.

File metadata

File hashes

Hashes for keyboard-0.9.13.win-amd64.zip
Algorithm Hash digest
SHA256 8caaf48cf9ac23b7d0beaea4390ea6cdae62d6f73533626b65c9ab7a296fe452
MD5 036d3dcb90f63b0da57d234f1c8e1048
BLAKE2b-256 ae531112f2f53e0833376744bbcb84c98ecb3c91a076baf03abd2522b82ebcf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.13.win-amd64.exe
Algorithm Hash digest
SHA256 8fb45c09296e50021898b4ea5a1d954ec8b132e6643f0e5837b761ea4c1470ae
MD5 77d25b2ff291bc2fd94441c8bce3ab63
BLAKE2b-256 cacb503e3bdc8df6b1bb06fe6dc2b2963da8660f375c96887c7f6e0a2abde63e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.13-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1c6a1fbac75b83d2a24f65ac65cc0510247ae1f9718de4c2d0d9ad3f1ccb763b
MD5 a3eaed6c10d3086486cd830e451e8178
BLAKE2b-256 26138f8e40d5457eb235014c7bd054013a50e41065d13c7c07ae5bbe157579f1

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