Skip to content

v2.2.0 — Copilot key control, per-app profiles, dual-role keys

Choose a tag to compare

@linkmodo linkmodo released this 06 Aug 03:36
· 3 commits to main since this release

Key Remapper v2.2 — control the Copilot key, per-app profiles, dual-role keys.

📥 Install

Download KeyRemapper.exe below and run it. No Python, no installer.

First run: "Windows protected your PC"

Click More info then Run anyway. The executable is not code-signed — a certificate costs
money every year and this is a free project — so SmartScreen flags it. That is a statement about
the certificate and how many people have downloaded this file so far, not about the file itself.

Confirm you got exactly what was published here:

Get-FileHash .\KeyRemapper.exe -Algorithm SHA256
44e158dd07c9a9b9d6c1ca109fbe19b2d546778de95515fb5bf35c52805b48a0

Would rather not trust a stranger's binary? Build it yourself — pip install -r requirements.txt
then python build.py. The README spells out what this app does with your
keystrokes
: your typing
is never logged, and it makes no network connections.

Administrator rights are optional; you only need them for windows that themselves run
elevated (some games). Your settings live in %APPDATA%\KeyRemapper\.

🤖 Take back the Copilot key

The Copilot key isn't a real key — the keyboard firmware fires a hidden Shift+Win+F23 chord,
which is why "just block F23" does nothing and why swallowing it pops the Start menu.

The new Copilot Key tab detects the exact chord your laptop sends, then lets you:

  • Give back the key it replaced — one click for Right Alt, Windows, Menu ▤ or
    Right Ctrl
  • Disable it entirely, Start-menu side effect included
  • Send any keys, launch a program or file, or open a website

✨ Also new

  • Per-app profiles — scope any mapping or block to a single .exe
  • Tap vs hold — CapsLock can send Escape when tapped and act as Ctrl when held
  • Pause hotkey — suspend every mapping without stopping the remapper
  • Mouse side buttonsmouse3/mouse4/mouse5 as sources
  • Run at logon, start in the tray, and a Settings tab
  • Edit mappings in place with conflict warnings
  • 🎯 Detect now uses the low-level hook, so Win and Copilot combinations are detectable

🐛 Fixed

These made previously advertised features silently do nothing:

  • Modifier combinations never matched. Win wasn't tracked, and the hook's VK_LSHIFT was
    compared against the generic VK_SHIFT that key names parse to — so every ctrl+/win+
    rule was dead, including v2.0's "block win+shift+f23".
  • Settings never persisted from the .exe. The config was written next to __file__, which
    in a one-file build is a temp folder Windows deletes on exit. Now %APPDATA%\KeyRemapper\,
    migrating any existing config once.
  • The hook could be dropped by Windows — it was installed on a thread that then blocked,
    exceeding LowLevelHooksTimeout. It now owns a dedicated message-pump thread.
  • A pointer bug in dwExtraInfo that could fault on input injected by other apps.
  • Cross-thread UI callbacks were lost (tkinter.after() off the main thread).
  • Logging restored%APPDATA%\KeyRemapper\key_remapper.log.
  • Administrator warnings on load removed.

Backed by 61 unit tests (python -m unittest discover -s tests).

Full changelog: 47ef2c0...v2.2.0