Releases: crftwr/keyhac
Releases · crftwr/keyhac
Release list
v2.0.0
Keyhac 2.0.0
The first stable release of Keyhac 2 — Python-scriptable keyboard customization for Windows and macOS.
Keyhac 2 is the successor to both Keyhac for Windows and Keyhac for macOS, rebuilt as one shared codebase. You write one file, ~/.keyhac/config.py, and it runs unchanged on both OSes — remapping keys, binding keys to Python functions, and driving windows, applications and the clipboard from the keyboard.
Downloads
- macOS 15 or later —
Keyhac-2.0.0-macos.dmg: drag Keyhac.app into Applications and launch it (it lives in the menu bar). Grant the Accessibility permission when prompted — the keyboard hook needs it. The app is signed and notarized. - Windows 10 / 11 (x64) —
Keyhac-2.0.0-win64.zip: unzip anywhere and runKeyhac.exe(it lives in the task tray). - The Python wheel / sdist are attached for running from source (
pip install, thenpython -m keyhac).
Details, data locations and privacy notes: installation guide.
Highlights
- Key remapping — key → key, key → key sequence, key → Python function.
- Per-application key tables — match by app name, window title, Win32 window class, or the full accessibility focus path (AX on macOS, UI Automation on Windows), down to a single pane inside an app.
- User modifiers (User0–User3) — turn any key into a modifier of your own, invisible to applications — and one-shot modifiers: tap for one action, hold to modify.
- Multi-stroke key tables — Emacs-style prefix keys, with a balloon showing the armed prefix.
- Clipboard history — persistent history in a popup chooser (type to filter, Enter pastes into the app you came from), plus fixed snippets and scriptable clipboard-transform tools.
- Window control — move, snap/tile, minimize, activate and launch applications, multi-monitor aware.
- Keyboard macros — record and replay keys — and mouse output: clicks, wheel scrolls and pointer moves from key bindings.
- Console window — live log with a last-key and focus-path inspector, so you can see exactly what to bind.
- Local only — Keyhac never connects to the internet: no update check, no telemetry.
Coming from Keyhac 1.x
- From Keyhac for macOS (1.68) — mostly drop-in: Keyhac 2 keeps the snake_case config API. Known differences are listed in the macOS migration guide.
- From Keyhac for Windows (1.83) — the API moved from camelCase to snake_case, so a 1.x config needs a translation pass; it is mechanical, and key expressions (including the
C-,A-,S-,W-,U0-short forms) are unchanged. The Windows migration guide has the full translation table. Note the data directory moved from%APPDATA%\Keyhacto~/.keyhac.
Documentation
- Installation — install, permissions, data files, privacy.
- Configuration — the complete config.py reference; the shipped config template is a working tour of every feature.
- Developer documentation — architecture, platform layer, packaging, testing.
Full Changelog: https://github.com/crftwr/keyhac/commits/v2.0.0