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.10.zip (49.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.9.10.win-amd64.zip (88.9 kB view details)

Uploaded Source

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

Uploaded Source

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

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.9.10.zip.

File metadata

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

File hashes

Hashes for keyboard-0.9.10.zip
Algorithm Hash digest
SHA256 663653298dacc0c94193410dfef7915d9e5213a2dc98ef51a0dad9a4dd158ae1
MD5 1de5646eefab22323779a7b95837ce1b
BLAKE2b-256 07decf222decfd1e052de3fd5e9985603d832eb066cb91091c4fa8b546f797a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.10.win-amd64.zip
Algorithm Hash digest
SHA256 644f94f0842fcb3f29b89bf01636bc18f55aab26639423d1e7b20d340d5eee9a
MD5 cd989d8df4a8b0db7afd89a51c09643a
BLAKE2b-256 33d979ded0b1cf6db034f22ea11dedc16d96aa936fbc7288c5ac2c52b43bb23c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.10.win-amd64.exe
Algorithm Hash digest
SHA256 caf5f568f395bb1857c4230932f3ca468f71bbdb09a16a58a2c2aba8352ae12e
MD5 5fd44dce5f1ecb8d1cd098256d5157df
BLAKE2b-256 049b5f19b30aa6ca4b8a4aaee7d44ffddb2578c827ccad12b9a16dc31ca338cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.9.10-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3269e368525b244b0c5a65a02db766dd92992387ec631fb905516515875d4a05
MD5 1bca9a81deedb1aa71bdf7d395714341
BLAKE2b-256 ef3d81d37fad1acb2d783e3c2d9daa8beb2e434dc302d233edf90c735eb4c059

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