← BACK TO OPEN SOURCE

Hotkey HQ: See Every Competing Keyboard Shortcut on Windows

I built this to answer the question that comes up whenever a shortcut misbehaves: who is eating this key? It maps competing shortcuts across Windows, tools, and custom configurations onto a single virtual keyboard.

Watch the film narrated, with sound: who is eating this key, and the tool that tells you.
Read the transcript

This is Hotkey H.Q., a small open source tool I built.

A keyboard shortcut stops working, and nothing on Windows tells you which app took it.

So I put every app's shortcuts on one keyboard you can press keys against.

Each coloured dot is an app that claims that key.

Press a key, and it lists every combination and who owns it.

It is free and open source, under the M.I.T. licence.

The problem

When a keyboard shortcut stops working or triggers an unexpected action on Windows, identifying which application registered it is difficult. Windows itself, VS Code, Claude Code, Windows Terminal, and PowerToys all register their own shortcuts without warning you about overlapping bindings. A combination like Ctrl+C performs three different actions depending on focus, while background utilities can silently shadow shortcuts you rely on every day.

What it does

  • Displays competing shortcuts from Claude Code, VS Code, PowerToys, and Windows Terminal on an interactive keyboard map.
  • Names every layer claiming a pressed shortcut and ranks them by which one actually takes priority.
  • Shows all active keys when holding Ctrl, Alt, or Shift, color-coded by the owning application.
  • Finds free key combinations that no software on your system currently claims.
  • Detects conflicts where an enabled PowerToys module silently shadows an application shortcut.
  • Assigns and removes keybindings for Claude Code and VS Code while creating automatic file backups.

How it works

Hotkey HQ runs a small local HTTP server (a lightweight web service running solely on your computer) bound to 127.0.0.1 and opens an interface in a native desktop window using pywebview (a library that displays web views as desktop windows). Every time the page loads, it reads your live configuration files directly from your machine, including Claude Code keybindings, VS Code user keybindings, Windows Terminal settings, and active PowerToys modules while ignoring disabled modules.

In default Capture mode, the app intercepts keyboard events while focused so shortcuts are inspected and explained rather than executed. All processing happens entirely on your machine, with one-time session tokens and origin checking (a security rule verifying where a request came from) blocking external web pages from accessing keybinding endpoints.

Get started

  1. Run initial setup

    setup.bat

    Creates a private Python virtual environment (an isolated Python setup) and installs pywebview.

  2. Launch application

    launch.bat

    Opens Hotkey HQ in a dedicated native desktop window.

  3. Inspect keybindings

    Press any shortcut while the window is focused or click keys to view combinations.

macOS and Linux (beta)

Hotkey HQ now also has macOS and Linux versions with platform-specific shortcut references and configuration paths. They are in beta: built and checked with automated tests, but not yet tested on real Mac or Linux hardware.

bash setup.sh
bash launch.sh

Run these commands from the repository folder. On a Mac, setup installs the Cocoa dependencies. No Accessibility, Input Monitoring or administrator permission is required; shortcuts are observed only in the focused window. Reading configurations needs ordinary file access, and assigning bindings, exporting or restoring backups needs write access. macOS may ask for access to a protected vault folder.

On Linux, install the graphical dependencies before setup. For Debian/Ubuntu:

sudo apt install python3-venv python3-pip python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-webkit2-4.1

Run the app as your desktop user, without root or input-group access. Linux OS shortcuts are a GNOME defaults reference; other desktops and shortcuts intercepted by the OS may differ. The full steps and known limits are in the README.

Requirements

  • Windows
  • Python 3
  • macOS (beta): Python 3.10+ with venv and pip, Bash, a graphical login session and pywebview's Cocoa/PyObjC backend
  • Linux (beta): Python 3.10+ with venv and pip, Bash, an X11 or Wayland graphical session, PyGObject, GTK 3 and WebKitGTK 4.1

Questions

Why can Hotkey HQ not intercept shortcuts like Win+key, Alt+Tab, or Alt+F4?

Windows claims system combinations like Win+anything, Alt+Tab, Alt+F4, Ctrl+Alt+Del, and Ctrl+Shift+Esc before any application can see them. Intercepting them would require a global low-level keyboard hook (a system-wide listener), which acts like a keylogger across all applications.

Can websites read or modify my keybindings through Hotkey HQ?

No. The local server binds to 127.0.0.1, requires a fresh one-time token injected on page load for every API call, and rejects requests carrying an external web Origin header.

Does Hotkey HQ back up files before modifying keybindings?

Yes. It makes a backup before it changes your VS Code or PowerToys settings, and you can save a timestamped copy of every keybinding file into a snapshots folder to restore later.

How does Hotkey HQ handle disabled PowerToys modules?

It inspects your PowerToys settings and ignores disabled modules, ensuring switched-off features are never falsely reported as stealing keys.