Skip to main content

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.

Metadata

Release files for keyboard 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for keyboard 0.11.0
File Size Uploaded
keyboard-0.11.0.zip 48.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for keyboard 0.11.0
File Interpreter ABI Platform
keyboard-0.11.0.win-amd64.exe Details
keyboard-0.11.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 734.0 kB

Release files / keyboard-0.11.0.zip

Download URL keyboard-0.11.0.zip
Size 48.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f9f2251dc76daa44bffc2568ad72eb807276393302ed4ccf2f35e7f393c81759
BLAKE2b-256 checksum
How to use checksums
c3a17bee30a56a7aa56a717ac959e64dd85030fedeb240425643cd480ae823d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / keyboard-0.11.0.win-amd64.exe

Download URL keyboard-0.11.0.win-amd64.exe
Size 637.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f7e756dfc6cef083720c47de814356d3919b8193d4372bef0d32f44ce6f8c4fc
BLAKE2b-256 checksum
How to use checksums
914f203cc98c3617b2ecd4eeeb8f86446be7e1b0f4ae493da1ebc62db8b75de9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / keyboard-0.11.0-py2.py3-none-any.whl

Download URL keyboard-0.11.0-py2.py3-none-any.whl
Size 48.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
d67dd0c8aa1feb7cad7a7efac6301889d2a99974979d997c7ff29c87d73cfa24
BLAKE2b-256 checksum
How to use checksums
73ef523b46398ce06577d7d65b869c6a151d7cc2ecde46082262caf43eb20ccd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.13.5

2 release files

0.13.4

3 release files

0.13.3

3 release files

0.13.2

3 release files

0.13.1

3 release files

0.13.0

3 release files

This release

0.11.0 This release

3 release files

0.10.4

3 release files

0.9.13

4 release files

0.9.10

4 release files

0.9.9

4 release files

0.9.8

4 release files

0.9.7

4 release files

0.9.6

4 release files

0.9.5

4 release files

0.9.4

4 release files

0.9.3

4 release files

0.9.1

0.7.1

3 release files

0.7.0

3 release files

0.6.8

3 release files

0.6.7

3 release files

0.6.6

3 release files

0.6.5

3 release files

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page