Skip to main content

System Hotkey 310

Multi platform system wide hotkeys for Python 3.10+

Currently no mac support but pull requests or collaboration is very welcome!

Note: currently this fork of system_hotkey exists just to fix Python 3.10 compatibility.

Installation

the old

pip3 install system_hotkey310

should do the trick

Windows

install pywin32

Linux

For x11 you should use xcffib (bsd license),

If for some reason you have to use the python xlib bindings (gpl license), a few fixes need be added first. See here

Usage

Input Keysyms

System hotkeys uses the keysym names from xlib for everything besides modifiers.(although case insensitive) grep for vk_codes for a list of available chars. If you are unable to bind to a certain key please let us know.

You can bind directly to symbols such as [”’,. etc Numpad keys can be binded by prefixing with kp_.

Supported modifiers include:

  • control

  • shift

  • super (windows key)

  • alt

InvalidKeyError will be raised if a key was not understood

from system_hotkey import SystemHotkey
hk = SystemHotkey()
hk.register(('control', 'shift', 'h'), callback=lambda x: print("Easy!"))

A SystemRegisterError will be raised if a hotkey is already in use.

To unregister a hotkey

hk.unregister(('control', 'shift', 'h'))

A KeyError will be raised if the combination is not already grabbed.

A UnregisterError will be raised if unregistering failed for any other reason.

If you want you can pass in a custom consumer:

def some_func(self, event, hotkey, args):
    pass

hk = SystemHotkey(consumer=some_func)
hk.register(hotkey, arg1, arg2, arg3)

So you have a master function that receives all hotkey presses and can delegate as desired.

Note Modifier keys are independent of order i.e control + alt + del is the same as alt + control + del

Features

  • Support for up to 3 modifiers and a key

Limitations

  • I have only mapped most common keys, i have not experimented with Unicode/Japanese characters etc. It’s only a matter of mapping a name to the keysym on Linux and virtual key code on windows.

  • binding to kp_left (key pad left) will also bind to kp_4, there is a flag (unite_kp) to toggle this behaviour but it is experimental

  • Requires an xserver (x11)…

To be done

Mac support

eta > 8 months

Version Release Notes

1.0.5

  • Python 3.10 compatibility

1.0.4

  • Exceptions are now run in main

1.0.3

  • Documented the fact that xlib shouldn’t really be used

1.0.2

  • Fixed a linux bug where spurious events got passed through

1.0.0

  • calls to the unregister and register are now thread safe

  • kp keys work properly

  • kp_unite option

0.1.4

  • Bug fix on linux where pressing numlock would crash us..

0.1.3

  • Custom args can now be passed to a custom consumer

Authors and Contributors

Timothy Eichler, Original Author of the system_hotkey package Henri Hänninen

Metadata

Release files for system-hotkey310 1.0.5

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

Source distribution (sdist)

Source distribution for system-hotkey310 1.0.5
File Size Uploaded Provenance Actions
system_hotkey310-1.0.5.tar.gz 32.1 kB Without provenance Details for system_hotkey310-1.0.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for system-hotkey310 1.0.5
File Interpreter ABI Platform Actions
system_hotkey310-1.0.5-py3-none-any.whl Python 3 none any Details for system_hotkey310-1.0.5-py3-none-any.whl

Total release size: 63.3 kB

Release files / system_hotkey310-1.0.5.tar.gz

Download URL system_hotkey310-1.0.5.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
84d160a678e5afae53bca59f647433e9aefb402f80302f5f8e1479231227abab
BLAKE2b-256 checksum
How to use checksums
ee6e4c428fe0720d863c53ad13477cf1dea0d0bb9fe2775652dbd95fa9e9602b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.7

Release files / system_hotkey310-1.0.5-py3-none-any.whl

Download URL system_hotkey310-1.0.5-py3-none-any.whl
Size 31.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4fd85d9ea5cac7d949421b945e718b80997eb08578627c809eef9adc219c0c7
BLAKE2b-256 checksum
How to use checksums
9e77f0190b70abf886a328ea318e13bb571ffff880a60ad299cdc0c9dca84348
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.7

Security for system-hotkey310 1.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files No provenance

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