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.12.zip (39.9 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.12.win-amd64.zip (89.2 kB view details)

Uploaded Source

keyboard-0.9.12.win-amd64.exe (630.4 kB view details)

Uploaded Source

keyboard-0.9.12-py2.py3-none-any.whl (36.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.9.12.zip.

File metadata

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

File hashes

Hashes for keyboard-0.9.12.zip
Algorithm Hash digest
SHA256 d90e56eeab4d6b986a83d39740bcf4c860aee2aa87f295761167e7c2d61cfd08
MD5 7c01eccbc2bcb8145311a5cf994d0d81
BLAKE2b-256 ef8ca7e015bf77cb714900d1f3e97fcf7c41d8ce576062cbdbf4692b67d95cd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.12.win-amd64.zip
Algorithm Hash digest
SHA256 18357eb05eb57de7485f24e39f631eb0960e33a3bf5511727c1ff0716ea0a680
MD5 fa3f9e8237763c5982e126d2f724d9d0
BLAKE2b-256 3578ddcc627373817281c8d2a5a843f4927d92e83ced64af208cb37a3a75e9ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.12.win-amd64.exe
Algorithm Hash digest
SHA256 81eb0ac4dfb0a372dc0b7cf2398ab6ddd1c17a68bdf08a3621f357dfca49467c
MD5 bc825e424f03f0dd439e3bc0072e13f5
BLAKE2b-256 c8b41831ea55fec744524508eda4b73ff04c0bcb253002042d689ed96ea8da3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.12-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a85357c79142dd90b2508ce7f8828b112486817a455b7bb51af78747b293c711
MD5 9b6b718b38516e4b49bc9cb77c1fe7ea
BLAKE2b-256 d629aac28431a1c60862e8174a247b5ea9805056c5f6ce7252e28a4fb25f7c0b

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