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.10.0.zip (47.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.10.0.win-amd64.zip (106.8 kB view details)

Uploaded Source

keyboard-0.10.0.win-amd64.exe (635.8 kB view details)

Uploaded Source

keyboard-0.10.0-py2.py3-none-any.whl (43.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.10.0.zip.

File metadata

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

File hashes

Hashes for keyboard-0.10.0.zip
Algorithm Hash digest
SHA256 b86f5c6da42adc6d80549f2384afff5b65b522bff083543c19f440f5e3fe5c31
MD5 90c015ed4c827ad5a8d0f3ee112b44f0
BLAKE2b-256 32072846bd4af7476126c1273000baba33b2359637207fa441b860254a9d4e98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.10.0.win-amd64.zip
Algorithm Hash digest
SHA256 4b794798c441408989b74bda9db25612f20b70fe0ff14066cf815deed8507b3f
MD5 6768d53611494a1fe953a2a2c0988866
BLAKE2b-256 bca660cf968c0e07350ad1eecd3f3b77a4921d0b964c1e3c6d75ba7fc181a7e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.10.0.win-amd64.exe
Algorithm Hash digest
SHA256 36c7ea8aa48eff6ad0e7110913a27c9c4388e59268fe34d6c9ce519dcb6ce2b3
MD5 e34cec1187f518c12c3b9fa063c47ccc
BLAKE2b-256 3a9504fefb3d4f8675cb3b16fd61dfe29bad5d963075faba41d6a75a678a5b83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.10.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 203b058acc40a403da1caabb3c5543c17234e6041fad1c4107f0c7f7e6ba6a42
MD5 c4516c8a43486f39d62ed33ed1ac99bc
BLAKE2b-256 affd3c06f5e67bf248e03c8455576952fb25f12ec18136c48339ff753b168cf1

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