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), with experimental OS X support (thanks @glitchassassin!).

  • 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 available via project mouse (pip install mouse).

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.4.zip (47.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.10.4.win-amd64.exe (636.1 kB view details)

Uploaded Source

keyboard-0.10.4-py2.py3-none-any.whl (47.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file keyboard-0.10.4.zip.

File metadata

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

File hashes

Hashes for keyboard-0.10.4.zip
Algorithm Hash digest
SHA256 4c5a78497aaabd661e5423b821f2a926489b8226f4ba2a636853c293971ef4a2
MD5 ec3d2f8584744f50704a72d3be9b5661
BLAKE2b-256 4017828d75a2548644dfb0f20f82df418d666dd80bb8112b3154a4f426e049a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.10.4.win-amd64.exe
Algorithm Hash digest
SHA256 a1899292c0b15a1bb52d560bee970bb9626e48a681d3ddcfce73278cd37ffcb5
MD5 d9eb748343923c9bd74c9f58937dd35c
BLAKE2b-256 6ee83fb8fc0a9fba1e91b8bef1c6117dcee8a5698cb41353f644e734a69eada3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for keyboard-0.10.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fd5e19e3558b93c770433698256d8887f74a6aedeffae1581ffacc384b7f1fa8
MD5 b674f0d90e610f5dbf23723211dc307f
BLAKE2b-256 bba0cb139633de7aec1f4ecbdb7844a16a0245eacd299a51b489f87fbecf445d

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