A lightweight Windows system tray utility that remaps the Copilot key on your keyboard to launch whatever you want.
No bloated apps, no PowerToys, no AutoHotkey — just a single, tiny .NET app that sits in your system tray and does exactly one thing: intercepts the Copilot key and runs your chosen action.
- Three gesture types — single tap, double tap, and press-and-hold, each independently configurable
- QuickLaunch overlay — press Copilot + Space for a Spotlight-style launcher: type a prompt to start a new Claude Code chat, or pick Resume / Continue / Desktop / Web
- Search & resume chats — full-text search across your past Claude Code conversations and resume any one of them by session
- Intercepts the Copilot key — handles both
VK_LAUNCH_APP1andWin+Shift+F23key mappings used by different keyboards - Built-in presets — one-click setup for Claude Code, Claude Desktop, or claude.ai
- Fully customizable — launch any application, run any terminal command, or open any URL
- Default working directory — set the folder Claude Code (and other terminal commands) launches in
- System tray app — runs silently in the background with a right-click menu
- Run at startup — optional toggle to launch automatically when you log in
- Single instance — prevents duplicate copies from running
- Hardened by default — validates URLs, application paths, and commands, and rejects shell metacharacters to prevent injection
- Zero dependencies — just .NET (already on Windows 11)
Download CopilotRemap-Setup.exe from the latest release and run it. The installer copies the app to %LocalAppData%\CopilotRemap and creates a Start Menu shortcut.
dotnet build -c Release
The built executable will be at bin/Release/net9.0-windows/CopilotRemap.exe.
dotnet run
Or launch CopilotRemap.exe directly after building.
dotnet publish -c Release -r win-x64 --self-contained false -o publish
This produces a small publish/CopilotRemap.exe that you can put anywhere.
- Run the app — an indigo keycap icon appears in your system tray
- Right-click the icon to open the menu
- Configure actions for each gesture:
| Gesture | Default | Description |
|---|---|---|
| Tap | — | Single press and release of the Copilot key |
| Double Tap | — | Two quick presses within 350ms |
| Hold | — | Press and hold for 500ms |
Each gesture has its own submenu with these options:
| Menu Option | What it does |
|---|---|
| Claude Code (Terminal) | Opens claude in Windows Terminal (in your default working directory, if set) |
| Claude Desktop | Launches the Claude Desktop app (auto-detects MSIX or standalone .exe install) |
| claude.ai (Browser) | Opens claude.ai in your default browser |
| Search Chats | Opens the QuickLaunch overlay to search and resume past Claude Code conversations |
| Custom Application... | File picker — choose any .exe |
| Custom Command... | Run any command in a terminal (e.g. python, wsl, node) |
| Custom URL... | Open any URL in your default browser |
| None (disable) | Disable this gesture |
You can also set a default working directory from the tray menu (Set Default Working Directory...), which is applied to Claude Code and other terminal commands.
- Press the Copilot key on your keyboard — your chosen action fires based on the gesture
Press Copilot + Space at any time to open the QuickLaunch overlay — a Spotlight-style launcher with two modes:
- Ask — type a prompt and press Enter to start a new Claude Code chat with it, or choose Continue Last Session (
claude --continue), Claude Desktop, or claude.ai - Resume — pick Resume Chat… to full-text search across your past Claude Code conversations (indexed from
~/.claude/projects/); use the arrow keys to select and Enter to resume that session
Press Esc to dismiss the overlay.
- Tap → Claude Desktop
- Double Tap → Claude Code in Terminal
- Hold → claude.ai in Browser
CopilotRemap installs a low-level keyboard hook (SetWindowsHookEx with WH_KEYBOARD_LL) that intercepts key events before they reach any application. It tracks both key-down and key-up events to classify gestures:
- Single tap: Key released before the hold threshold, and no second tap within the double-tap window
- Double tap: Two key presses detected within the double-tap window (350ms)
- Hold: Key held down past the hold threshold (500ms) — fires immediately without waiting for release
The Copilot key on Windows keyboards sends one of two signals depending on the manufacturer:
VK_LAUNCH_APP1(0xB6) — used by some keyboards as a direct virtual keyWin+Shift+F23— used by others as a key combination
CopilotRemap handles both.
Settings are stored as JSON at:
%APPDATA%\CopilotRemap\config.json
Example config:
{
"SingleTap": {
"Type": "LaunchStoreApp",
"Target": "AnthropicPBC.Claude_xxxxx!Claude",
"DisplayName": "Claude Desktop"
},
"DoubleTap": {
"Type": "RunInTerminal",
"Target": "claude",
"DisplayName": "Claude Code (Terminal)"
},
"Hold": {
"Type": "OpenUrl",
"Target": "https://claude.ai",
"DisplayName": "claude.ai (Browser)"
},
"WorkingDirectory": "C:\\Projects",
"DoubleTapDelayMs": 350,
"HoldDelayMs": 500
}Old single-action configs are automatically migrated to the SingleTap gesture.
- .NET 9 SDK (or Visual Studio 2022 with .NET desktop workload)
git clone https://github.com/Zorrobyte/CopilotRemap.git
cd CopilotRemap
dotnet build
dotnet run
Requires Inno Setup 6.
dotnet publish -c Release -r win-x64 --self-contained false -o publish
iscc installer\CopilotRemap.iss
This produces installer\CopilotRemap-Setup.exe.
CopilotRemap/
├── Program.cs Entry point, single-instance mutex
├── TrayApp.cs System tray icon, context menu, gesture detection, config
├── KeyboardHook.cs Low-level keyboard hook (Win32 P/Invoke)
├── AppAction.cs Action model, presets, Execute logic
├── ChatSessionScanner.cs Indexes ~/.claude/projects/ for chat search & resume
├── QuickLaunchWindow.cs Spotlight-style QuickLaunch / Resume overlay (Copilot+Space)
├── InputDialog.cs Minimal text input dialog
├── IconHelper.cs Generates the tray icon at runtime via GDI+
├── CopilotRemap.csproj .NET 9 WinForms project
└── installer/
└── CopilotRemap.iss Inno Setup installer script