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.11.zip (39.8 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.11.win-amd64.zip (88.9 kB view details)

Uploaded Source

keyboard-0.9.11.win-amd64.exe (630.3 kB view details)

Uploaded Source

keyboard-0.9.11-py2.py3-none-any.whl (36.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.9.11.zip.

File metadata

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

File hashes

Hashes for keyboard-0.9.11.zip
Algorithm Hash digest
SHA256 1386c476923bc8dcaf2f5a3d7b885d4d2b80bf5a38650b8ff42a3779f65a923f
MD5 8a35f5f05784a84cb52cf2f147a545d5
BLAKE2b-256 3825f2f2c3b2cf58cf3349ea3c7735dc8c1ec913774c7bb5e2666fa8304c6730

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.11.win-amd64.zip
Algorithm Hash digest
SHA256 7f0deb784e13081b8374c6b5c51c4a05c67305f0cf8cc7897c6e6e8de590df9b
MD5 2f9fc4b6e7b4b2dafd428e01d169a818
BLAKE2b-256 9291b6e5517a4f78f43307e2fa72480ff6263e8a693b6c8329068b7eb23065fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.11.win-amd64.exe
Algorithm Hash digest
SHA256 5cc45a731399f91d15ae20143bc9fa8defb21cdbee970ef7c011cd2b10708987
MD5 408f1a04c1d0701a72a8fd8a8fafa513
BLAKE2b-256 26f11aa26899d46a09e9f9b92783b1d0b77ec69528ba3c31e53bdf5f0024c6b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 82739409ac1a04c262afc513ae42a8ad99c3108003e0919b1151b45f873a45f3
MD5 dc09341558ae39908566ab1d73504406
BLAKE2b-256 60ad8cc0fdf5b13b1337686037a233a4ded7d60ae14a24807cc3492f1b7a8eb1

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