Skip to content

v2.0.0

Latest

Choose a tag to compare

@crftwr crftwr released this 01 Aug 23:00

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 laterKeyhac-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 run Keyhac.exe (it lives in the task tray).
  • The Python wheel / sdist are attached for running from source (pip install, then python -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%\Keyhac to ~/.keyhac.

Documentation

Full Changelog: https://github.com/crftwr/keyhac/commits/v2.0.0