Keyfire is a Windows desktop productivity app. You assign actions to key combinations and Keyfire fires them instantly, in any app, while you work. Everything is visual. Set it up in seconds.
What Keyfire can do
Hotkeys
Bind a key combo to an action. Ctrl+Alt+E opens your email client.
Macros
Chain multiple steps in sequence. Open an app, wait, type text, press Enter.
Text Expansions
Type /sig, get your full signature. Works in every app.
Formulas PRO
Compute values in your snippets. {=upper(name)}, conditional text, math.
Clipboard History
Everything you copy is searchable, taggable, and reusable. Press Ctrl+Shift+V.
Radial Menus
Pop a wheel of actions over your cursor. Click a wedge to fire it.
Profiles
Separate shortcut sets per app or context. Auto-switches when the linked app gets focus.
Quick Search
Press Ctrl+Space. Type any part of an action name. Hit Enter.
How Keyfire runs
Keyfire starts with Windows and sits in the system tray, bottom-right near the clock. As long as the icon is visible, your shortcuts are live. Pause everything from the tray at any time. Keyfire uses about 30MB of RAM and effectively 0% CPU when idle.
Head to Install & First Launch for the onboarding flow, then Quick Start to set up your first shortcut in under two minutes.
Download
Grab the latest build from keyfire.app or directly from GitHub Releases. Two builds are available:
- Keyfire_x64-setup.exe for Intel and AMD machines
- Keyfire_arm64-setup.exe for ARM-based Windows (Surface Pro, Snapdragon laptops)
Running the installer
The installer is code-signed via Microsoft Trusted Signing under Node Group Ltd. Keyfire installs to your user folder, no admin rights required. About 9MB on disk after install.
You may see a SmartScreen prompt the first time you install. This is expected for newer apps that have not yet built up Windows reputation. Click More info, then Run anyway. The dialog should show Publisher: Node Group Ltd confirming the installer is genuine. The warning fades as install volume builds.
The welcome screen
On first launch, Keyfire shows a welcome screen with a six-tile feature grid covering triggers, macros, radial menus, text expansions, quick search, and clipboard history. Click Get Started to begin the tour, or Skip the tour if you want to dive straight in.
The onboarding tour
A five-step tour walks you through the main UI surfaces:
Replay the tour any time from Settings → Help & Documentation → Replay Onboarding Tour.
System tray icon
The tray icon shows Keyfire's state at a glance:
| Colour | State |
|---|---|
| Gold | Running, hotkeys live |
| Dimmed | Paused (all shortcuts suspended) |
| Red | A key is held or a repeat is active. Tooltip shows which key. |
Title bar
Runs across the top. Left side: Keyfire logo and area tabs (Keyboard, Mouse, Radial, Expansions, Clipboard, Analytics). Centre: active profile tabs. Right side: Quick Search, List View toggle, and the Settings cog. A Templates pill button also appears here until you dismiss it.
Profile accordion
The left panel lists all your profiles. The active profile shows a green dot. Profiles linked to a specific app show a Windows icon. Click any profile to switch. Right-click for rename, duplicate, export, link to app, and delete options. Profiles are grouped into General (always active) and App-Specific (auto-switches when the linked app has focus).
Assignments sidebar
Below the profile accordion. Lists every shortcut in the active profile, grouped by modifier layer under gold header bars. Use the modifier filter tabs (All, Ctrl, Shift+Alt, etc.) to narrow by layer. Each tab shows a count badge.
Keyboard canvas
The main area shows a visual keyboard. Assigned keys are highlighted gold. Click any key to open its action panel on the right. Use the modifier buttons at the top to switch layers. Below 800px window width, the canvas swaps to List View automatically.
Action panel
Opens on the right when you click a key or assignment. Choose the action type at the top, configure the fields, save with the Save button or Enter. Discard with Esc.
Status bar
Bottom of the window. Shows macros enabled / paused state, assignment count, and the Listener and Executor engine indicators. Both should be green when Keyfire is running normally.
The area tabs across the top let you switch between the keyboard canvas, mouse canvas, radial menu editor, text expansions, clipboard history, and analytics. The sidebar and status bar persist across tabs.
Option 1: text expansion (recommended starting point)
A text expansion replaces a short trigger you type with a longer phrase, in any app.
/sig or /ty.Prefix triggers with / or ; so they never fire mid-word by accident. Good examples: /addr, /sig, ;ty.
Option 2: hotkey
Option 3: template pack
Click the Templates pill in the title bar (or go to Settings → Templates) to import a pre-built set of shortcuts. Templates are additive. They never overwrite your existing assignments.
A hotkey combines one or more modifier keys (Ctrl, Alt, Shift, Win) with a letter, number, function key, or special key. When pressed from anywhere on your computer, Keyfire fires the assigned action instantly.
Creating a hotkey
Alternatively, click + New Trigger in the sidebar. The Record button pulses gold and a hint reads "Press Record or click a key to start". Then either press a combination physically or click a key on the canvas.
Modifier layers
Each modifier combination is a separate layer: Ctrl, Alt, Shift, Win, Ctrl+Shift, Ctrl+Alt, Shift+Alt, and so on. The same physical key can have a different action on each layer. Ctrl+E and Ctrl+Shift+E are entirely independent assignments.
Bare keys (app-specific profiles only)
In a profile linked to a specific app, you can assign bare keys with no modifier. Pressing F alone fires the action. This only works when the linked app has focus, so it does not interfere with normal typing elsewhere. Ideal for CAD software, games, and tools where bare key macros are standard.
Win key
The Windows key can be used as a modifier. In the hotkey capture UI, click the ⊞ Win button to add it to a combination. Win key combinations are captured and fired exactly like any other modifier layer.
Right-click options on assigned keys
Right-click any assigned key on the canvas (or card in List View) to access: Rename, Duplicate (copies the full payload including double-press and hold config), and Clear (with inline confirmation).
Keyfire overrides key combinations when it captures them. Avoid assigning combinations that Windows uses globally, such as Win+D. Ctrl+Alt+Del cannot be overridden by any application.
Switch to the Mouse tab to see a visual mouse diagram. Click any button to assign an action. Modifier layers work the same as for keyboard hotkeys.
Available mouse triggers
| Button | Description |
|---|---|
| Left Click | Standard left mouse button |
| Right Click | Standard right mouse button |
| Middle Click | Scroll wheel press |
| Side 1 / Side 2 | Side buttons (Mouse 4 and 5, if your mouse has them) |
| Scroll Up / Scroll Down | Scroll wheel direction. Fires once per scroll tick. |
Setting up a mouse hotkey
Assigning mouse buttons without a modifier is only supported in app-linked profiles. You would not want left click triggering a macro everywhere.
Side buttons not firing?
If your mouse has manufacturer software (Logitech G Hub, Razer Synapse, etc.), it may be translating side buttons to other inputs before Windows sees them. Open the mouse software and set Side 1 and Side 2 to their default mouse button mapping. Then Keyfire can see them.
Every assignment can have up to three distinct actions on the same key, fired by different press patterns:
- Single press: tap the key, action fires.
- Double press: tap twice within the double-tap window, the double-press action fires instead.
- Hold PRO: press and hold past the threshold (default 350ms), the hold action fires.
Setting up double press
Setting up hold PRO
The Hold pill appears next to Single and Double when you open an assignment. Hold triggers fire after the key has been held past the configurable threshold (200ms to 700ms, default 350ms in Settings).
Hold triggers require a Pro licence. Without it, the Hold pill shows a lock icon and clicking it opens the upgrade modal. Free users can still configure single and double press triggers.
How hold detection works
When you press a hold-armed key, Keyfire starts a timer. If you release before the threshold, the single-press action fires (if assigned) or the keystroke passes through to the focused app. If you cross the threshold, the hold action fires and the key release is suppressed.
Double-tap window
The interval Keyfire waits for a second tap before firing the single-press action. Adjust in Settings → Compatibility → Double-tap window. Default is 300ms.
You can combine all three modes on one key. For example: F8 single = type a string, F8 double = open an app, F8 hold = fire a macro. Cycle through the Single / Double / Hold pills to configure each.
Type Text sends a fixed string to the active text field the moment you press the hotkey. Works in any application.
Input method
Three methods are available. The default works in most situations. Change it only if you run into issues.
| Method | When to use |
|---|---|
| Global default | Whatever you have set in Settings → Compatibility. Suitable for most apps. |
| Direct | Faster. Good for apps that process keys directly (games, CAD tools, DirectInput). |
| Clipboard | Pastes via clipboard. Most reliable in apps that intercept standard key input. May briefly affect clipboard contents. |
Type Text supports full Unicode. If a character is not typing correctly in a specific app, switch that assignment to the Clipboard method.
Games and DirectInput
Keyfire uses scancode-mode injection by default, so keystrokes are visible to games using DirectInput, Raw Input, or other low-level input APIs. If a hotkey is being ignored by a specific FPS or simulation game, raise it as feedback. Most cases work without configuration.
Send Hotkey fires a key combination into whichever application is in focus. This lets you trigger an app's own keyboard shortcuts from a Keyfire hotkey, useful when an app's native shortcut conflicts with something you have assigned globally.
Example: your CAD app uses Ctrl+F for a tool, but you have already assigned Ctrl+F globally in Keyfire. Bind Keyfire's Ctrl+G to Send Hotkey → Ctrl+F, and Keyfire sends it directly to the active window.
Hold Mode
The Hold Mode toggle changes Send Hotkey behaviour. The first press sends keydown only (holding the key), and the second press sends keyup (releasing it). Useful for gaming and CAD workflows that need a sustained key press.
While a key is held, the Keyfire tray icon turns red and the tooltip shows which key is being held. The held key auto-releases when:
- You press the same hotkey again
- You press any non-modifier key physically
- You pause Keyfire
- You quit Keyfire
Held keys via SendInput do not produce repeated characters. Windows only repeats hardware keypresses. Use hold mode for games and CAD tools that poll key state, not for generating repeated text.
Repeat Mode
Repeat Mode sends the target key or mouse click repeatedly at a configurable interval. First press starts repeating, second press of the same trigger stops it. Other keypresses do not stop it. Only the original trigger hotkey toggles it off.
| Setting | Description |
|---|---|
| Interval | Milliseconds between each repeat. Minimum 50ms, default 100ms. |
While repeating, the tray icon turns red and the tooltip shows the repeating key and interval. Repeating auto-stops when you pause Keyfire or quit the app.
Hold Mode and Repeat Mode are mutually exclusive. Enabling one disables the other. Both work with keyboard keys and mouse buttons.
Mouse button targets
Send Hotkey supports mouse buttons (Left Click, Right Click, Middle Click) as targets in all three modes: normal, hold, and repeat. Select a mouse button from the pill buttons below the capture field.
Open App
Launches an installed application. Click Browse to select the .exe, or type the path manually. Keyfire stores only the executable name, not the full path, making profiles portable across machines.
Open URL
Opens a URL in your default browser. Include the full URL with https://. Works with websites, app deep links, and internal network addresses.
Open Folder
Opens a folder in Windows Explorer. Click Browse or type the path manually. Supports environment variables like %USERPROFILE% and %APPDATA%.
Need to open an app and immediately do something in it? Use a Macro. Chain Open App → Wait (500ms) → Type Text or Press Key to give the app time to load before sending input.
A macro is a sequence of steps that Keyfire executes in order when you press the hotkey. Mix any combination of step types in a single macro.
Available step types
| Step type | What it does |
|---|---|
| Type Text | Types a string at the cursor position. Full Unicode support. |
| Dynamic Text | Like Type Text, but with token replacement at fire time. Supports date, time, clipboard, selection, and formula tokens. |
| Press Key | Sends a single keypress or combo. For example Enter, Escape, Ctrl+V, Delete. |
| Click Mouse | Sends a single mouse button click. |
| Click at Position | Moves the cursor to specific screen coordinates and clicks. |
| Wait (ms) | Pauses for a specified number of milliseconds before the next step. |
| Wait for Input | Pauses until a specified mouse button or key event occurs. |
| Open App / URL / Folder | Same as the standalone actions, callable as a step inside a macro. |
| Focus Window | Brings a specific open application window to the foreground. |
| Run AHK Script | Executes an AutoHotkey v1 or v2 script. Waits for completion before the next step. |
| Fire Trigger | Calls another macro or action by its storage key. Up to 5 nesting levels. |
| Fire Text Expansion | Fires an expansion by its trigger string. The expansion's resolution rules apply. |
Building a macro
Macro looping
Below the Input Method row, the Loop section lets the macro repeat itself. Two modes:
- Count: run N times in a row.
- Forever: run continuously until you press Esc or re-press the trigger.
An optional Delay between iterations smooths out fast loops. Press the same trigger again while a loop is running, and Keyfire cancels it.
Three ways to stop a loop: press Esc, re-press the trigger that started it, or pause Keyfire from the tray. Forever loops also stop automatically if you quit the app.
Focus Window: Pick Window
The Focus Window step brings an app to the foreground. Instead of typing a .exe name manually, click Pick Window. A dropdown appears showing all currently running processes. Selecting one fills in both the process name and window title automatically.
Wait for Input
Pauses the macro until a specified mouse or keyboard event. Supported input types include left click press / release, right click, and specific keys. Useful when a macro needs to wait for you to click somewhere before continuing.
If a macro types text before an app has finished loading, the characters get dropped. Add a Wait (ms) step of 500 to 1000ms after an Open App step to give it time to settle.
Fire Trigger and Fire Text Expansion
These two step types call other Keyfire actions from inside a macro. Useful for composing complex flows from smaller reusable units. Keyfire enforces a maximum of 5 nesting levels to prevent infinite recursion.
Keyfire bundles AutoHotkey executables for both v1 and v2. You do not need AutoHotkey installed separately. Write a script body, assign it to a key, and Keyfire handles execution.
How it works
Return needed. Keyfire handles the trigger.Execution
When the hotkey fires, Keyfire writes a temporary .ahk file, spawns the bundled AutoHotkey process, and cleans up after it exits. Scripts run with ExitApp appended automatically unless your script already contains it.
| Behaviour | Description |
|---|---|
| Re-trigger | Pressing the same hotkey again kills the previous AHK instance and starts a fresh one. |
| Macro step | AHK scripts can also be used as a step inside a Macro Sequence. Keyfire waits for the script to finish before proceeding to the next step. |
| Cleanup | All running AHK processes are killed on app quit. Leftover temp files from crashes are cleaned up on next startup. |
v1 vs v2 syntax
AutoHotkey v1 and v2 have different syntax. The version toggle in the form switches which engine runs the script. The placeholder text updates to show the correct syntax for each version.
| Action | v1 syntax | v2 syntax |
|---|---|---|
| Message box | MsgBox, Hello! | MsgBox "Hello!" |
| Send keys | Send, {Enter} | Send "{Enter}" |
| Run app | Run, notepad.exe | Run "notepad.exe" |
If you already have AHK scripts, paste the body directly into Keyfire. Your scripts work alongside visual hotkeys, macros, and text expansions, all managed from one app.
Text expansions monitor what you type and replace a trigger sequence with expanded text the moment you complete it. They work in any application: browser, email, CRM, editor, anywhere.
Creating an expansion
Trigger tips
- Prefix triggers with
/or;to prevent accidental firing mid-word. - Triggers are case-sensitive by default.
- Single-character triggers work in app-linked profiles with bare key mode.
Trigger modes
The expansion editor has two trigger modes:
- Space: fires when you type the trigger followed by a space. Best for triggers that could appear inside other words.
- Immediate: fires as soon as you finish typing the trigger. Best for prefix-style triggers like
/sig.
Categories
Assign expansions to named categories. Category tabs appear at the top of the list. Drag tabs to reorder them. The order is saved.
Variants PRO
One trigger can have multiple variant outputs. When the trigger fires, Keyfire shows a selector with all variants and you pick one. Useful for response templates with formal / casual / brief variations on the same theme.
Image expansions PRO
Expansions can paste images as well as text. Toggle the Image type at the top of the expansion editor, then click Choose Image to select a PNG or JPEG file.
| Setting | Description |
|---|---|
| Image path | Full path to a PNG or JPEG file on your machine. |
| Scale | 10 to 100%. Resizes the image before pasting. 100% uses the original size. |
| Trigger mode | Space (type trigger + space) or Immediate (fires as you finish typing). |
When the trigger fires, Keyfire writes the image to the clipboard and sends a paste command. Works in Word, Outlook, Google Docs, and any app that accepts pasted images.
Autocorrect
The Autocorrect tab manages typo replacements. Type a common misspelling, get the correct version. Behaves identically to expansions but with a separate management surface.
Use the All / Text / Image filter pills above the expansion list to find expansions by type.
Tokens are special placeholders in your expansion text that are replaced with live values at the moment the expansion fires. Insert them using the toolbar buttons in the expansion editor.
Date and time
Click the Date & Time toolbar icon for the full menu. Sub-sections cover dates, date parts, time, and date math.
Date formats
Date parts
Time
Date math
Append :FORMAT to use a specific format. For example {date:+1d:YYYY-MM-DD}.
Clipboard
Insert the current clipboard contents into your expansion.
Selection NEW
Insert whatever text you currently have highlighted in the source app. Keyfire presses Ctrl+C internally to capture the selection, then restores your previous clipboard contents.
If nothing is selected when the expansion fires, {selection} resolves to an empty string. The expansion still fires.
Cursor position
Mark where the cursor should land after the expansion completes.
Example: Dear {fillIn:Name},{cursor}\n\nKind regards places the caret after the comma so you can start typing the body immediately.
Global variables PRO
Define a reusable text value once and reference it across multiple expansions using {{name}}. Update the variable once and it updates everywhere instantly. Useful for your company name, phone number, address, or any shared piece of text.
Define variables in Settings → Global Variables. Click the Variables toolbar icon in the expansion editor to insert one.
Fill-in fields let an expansion pause before completing and prompt you for variable values. The prompt opens in a small floating modal next to your cursor.
Insert a fill-in
In the expansion editor, click the Fill-in toolbar icon. Choose a field type:
Text
Single-line text input. The classic fill-in. Inserts {fillIn:Label}.
Multi-line Text
Larger text area for paragraphs. Inserts {fillIn:Label:multiline}.
Dropdown
Pick from a list of preset options. Comma-separated in the editor. Inserts {fillIn:Label:dropdown:opt1,opt2,opt3}.
Yes / No Toggle
Boolean checkbox. Returns yes or no. Inserts {fillIn:Label:checkbox}.
Number
Numeric input with validation. Inserts {fillIn:Label:number}.
Date Picker
Native date picker. Inserts {fillIn:Label:date}.
Default values
Append :default=VALUE to seed an initial value. The user can accept or edit it.
{fillIn:Name:text:default=John}{fillIn:Tone:dropdown:Formal,Casual:default=Casual}{fillIn:Done:checkbox:default=yes}{fillIn:Qty:number:default=1}
Editing an existing fill-in
Click any fill-in chip in the editor. A small popover appears showing the label and (for dropdowns) the options. Edit and click Save. All chips in the editor that reference the same label update together.
Reusing the same field
If you reference the same label multiple times, Keyfire prompts once and inserts the answer at every position. Example:
Dear {fillIn:Name}, thank you for your enquiry. We will follow up with you, {fillIn:Name}, by close of business.
The Fill-in insert menu shows a Reuse row with chips for every fill-in label used elsewhere in the editor. Click a chip to insert that field at the cursor.
The fill-in modal
When the expansion fires, Keyfire opens a small modal next to your cursor with one input per field. Tab between fields. Press Enter on the last field to submit. Press Esc to cancel.
Expansions containing fill-in fields render as plain text in the output. Rich formatting (bold, italic, lists) is not preserved through the fill-in flow.
Formulas turn text expansions from static templates into dynamic content. Inside any expansion you can reference fill-in fields, run math, manipulate strings, and switch text based on conditions.
Two token types
| Token | What it does |
|---|---|
{=expr} | Evaluates the expression, substitutes the result. Renders as a chip in the editor. |
{if cond}…{else}…{endif} | Keeps one branch based on the condition. Plain text in the editor for inline editing. |
Inserting a formula
Click the Formulas toolbar icon (the function-square symbol) in the expansion editor.
- Expression {=…} opens a prompt where you type the expression. Inserts as a chip showing
ƒ expr. - If / Else block inserts a template
{if condition}then text{else}other text{endif}that you edit in place.
Click any formula chip to edit the expression. The popover prefills with the current expression.
Supported values
- Numbers:
2,3.75,-10 - Booleans:
yes/no(also acceptstrue/false) - Strings:
"abc","this is a string" - References: bare identifiers resolve to fill-in field values, then global variables, then
selectionandclipboard.
Operators
| Category | Operators |
|---|---|
| Math | + - * / % |
| Comparison | == != < > <= >= |
| Logical | && || ! |
| String concat | & |
| Grouping | ( ) |
Built-in functions
String
| Function | Example | Result |
|---|---|---|
upper(s) | upper("hi") | HI |
lower(s) | lower("HI") | hi |
trim(s) | trim(" x ") | x |
len(s) | len("abc") | 3 |
substring(s, start, len) | substring("abcdef", 2, 3) | bcd |
replace(s, find, repl) | replace("good job","good","great") | great job |
contains(s, v) | contains("hello world", "world") | yes |
startswith(s, v) | startswith("hello", "he") | yes |
endswith(s, v) | endswith("hello", "lo") | yes |
urlencode(s) | urlencode("a&b") | a%26b |
Math
| Function | Example | Result |
|---|---|---|
round(x) | round(1.7) | 2 |
floor(x) | floor(1.7) | 1 |
ceil(x) | ceil(1.2) | 2 |
abs(x) | abs(-3) | 3 |
Logic
| Function | Example | Result |
|---|---|---|
if(cond, a, b) | if(qty > 5, "many", "few") | (depending on qty) |
Worked examples
Greet by tone
A snippet with a dropdown fill-in named tone and two output styles:
{if tone == "Formal"}Dear {fillIn:Name},{else}Hi {fillIn:Name}!{endif}
Conditional follow-up
Total: {=qty * price}{if qty > 10} (bulk discount applies){endif}
Format selection in transit
With text highlighted in any app, this fires after the trigger:
The user typed: "{=upper(selection)}"
If a formula fails to parse or evaluate, the result is rendered inline as «error: message». The rest of the expansion still fires. Useful for spotting typos without losing your work.
Expansions containing {if}…{endif} blocks render as plain text. {=expr} chips work in both plain and rich expansions.
Quick Search is a floating overlay. Press the shortcut from anywhere on your computer, type a few characters, and fire any Keyfire shortcut without leaving your current app.
Opening Quick Search
Press Ctrl+Space from anywhere. The overlay appears immediately over whatever you are doing. Press Esc to dismiss without triggering anything.
Navigating results
- Type any part of the shortcut name or action description. Results update as you type.
- Use ↑ / ↓ to move between results.
- Press Enter to fire the selected result.
- Press Esc to dismiss.
What can it find?
Every hotkey assignment, expansion, autocorrect entry, and quick action across all your profiles. Quick Search reaches everywhere. The result list includes the trigger and the action type.
Search templates
The Quick Search overlay also exposes search templates, prefab snippet packs you can import. Templates live in Settings → Templates.
Change the Quick Search shortcut in Settings → Quick Search. Default is Ctrl+Space. If your app uses this combination, Keyfire's overlay takes priority while focused.
Radial menus are visual wheels of actions that appear under your cursor when triggered. Each wedge is an action. Click it to fire. Useful when you want a curated set of actions reachable without remembering individual hotkeys.
Building a radial menu
Firing the menu
Press the menu's hotkey from anywhere. The wheel appears under your cursor. Move the mouse over a wedge to highlight it, then click. The action fires in the app you were in before the menu opened.
Nested radial menus
Drag a folder onto the canvas to create a nested wheel. Clicking it opens a sub-radial of actions. Useful for grouping by category, for example a "Tools" folder containing six specific tool macros.
Drag and drop
Drag any existing hotkey or expansion from the sidebar into the radial editor to add it as a segment. Keyfire stores a reference to the original, so editing the source updates the radial too. Labels propagate automatically.
The icon picker includes thousands of lucide icons and Simple Icons brand glyphs (GitHub, Slack, Photoshop, etc.). Search by name. Hit Enter on a result to select it.
Behaviour over fullscreen apps
Radial menus open over borderless fullscreen apps and most games. Firing an action sends input to whichever window had focus before the menu opened. Exclusive fullscreen apps (some DirectX games) may resist focus restoration. Borderless windowed mode is the reliable mode for gaming use.
Keyfire captures everything you copy to the clipboard: text, links, code, and images. All data is stored locally in a SQLite database on your machine, encrypted at rest. Nothing is transmitted.
The clipboard panel
Open the Clipboard tab in the title bar to see your full clipboard history. Items are displayed as a masonry grid sorted by most recent, with pinned items always at the top.
Features
| Feature | Description |
|---|---|
| Auto-tagging | Each item is tagged as Text, Link, Email, Colour, Number, or Image based on its content. |
| Source app | Shows which app you copied from (Chrome, VS Code, Outlook, etc.). |
| Pin | Pin important items so they stay at the top regardless of age. |
| Search | Filter items by text content. Combine with tag filter pills and source app dropdown. |
| Inline editing | Edit any text-based clipboard item directly. Click Edit in the detail pane. |
| Image support | Screenshots and copied images are captured as PNG with full preview and zoom. |
| OCR | Captured images run through OCR. Extracted text becomes searchable and copyable. |
| Timeline grouping | Items grouped by Pinned, Today, Yesterday, This Week, This Month, Older. |
| Storage indicator | Shows the total size of your clipboard database in the panel toolbar. |
| Column toggle | Switch between 1, 2, or auto-column grid. Useful when comparing long snippets. |
Quick paste overlay
Press Ctrl+Shift+V from any app to open the clipboard overlay, a floating popup with your recent clipboard items. Use arrow keys to navigate, Enter to paste, Escape to close.
The overlay has a master-detail layout: the left pane shows compact rows, the right pane shows the full content with metadata and action buttons (Pin, Delete, Paste, Edit).
Scratchpad
The clipboard overlay includes a slide-out scratchpad on the right side. Toggle it with the arrow button on the panel edge. Use it to jot notes, stage text, or keep references handy. Content auto-saves and persists across app restarts.
Retention
Clipboard history is retained for 7 days on the Free plan and up to 30 days on Pro. Pinned items are never automatically deleted. Adjust the retention period in Settings → Clipboard. Clear all history manually from the panel toolbar.
Encryption at rest
All clipboard content (text, OCR, image bytes, previews) is encrypted with AES-256-GCM. The encryption key is wrapped via Windows DPAPI and tied to your user account. Metadata (timestamps, app names, tags) stays plain so search filters work without decryption.
Add specific apps to the exclusion list in Settings → Clipboard → Exclusions to skip clipboard capture from those processes. Useful for password managers and other sensitive sources.
List View replaces the keyboard canvas with a scrollable card grid showing all assignments. Useful when you have many shortcuts and want to browse or edit them without navigating the keyboard layout.
Switching views
Click the List View toggle in the title bar. Your preference is saved between sessions. List View also activates automatically when the window is narrower than 800px. Widening the window restores whichever view you were in before the auto-switch.
Modifier filter
At the top of the list, modifier pills (All, Ctrl, Alt, Shift, etc.) filter by layer. Each shows a count badge. When a specific modifier is selected, a gold header bar appears above the cards labelling the layer.
Cards
Each card shows the key combination, action type badge, and assignment name. Right-click any card for Rename, Duplicate, and Clear options, same as right-clicking on the keyboard canvas.
A profile is a complete, independent set of assignments. Only one profile is active at a time. Its shortcuts are the ones Keyfire fires. The active profile shows a green dot in the accordion.
Creating and switching profiles
Click + New Folder at the top of the accordion. Click any profile name to switch to it. The switch is instant.
Profile groups
- General: unlinked profiles, always available regardless of which app has focus.
- App-Specific: profiles linked to a .exe. When the linked app has focus, this profile activates automatically. When focus leaves, the previous profile resumes.
Linking a profile to an app PRO
Auto-switching requires Pro. On Free, you can create app-linked profiles but the auto-switch does not fire. You can still switch manually.
To unlink, right-click and choose Unlink App.
Right-click options
| Option | What it does |
|---|---|
| Rename | Edit the profile name inline. |
| Duplicate | Creates a full copy of the profile including all assignments. |
| Link to App | Opens the app picker (shown on unlinked profiles). |
| Change App | Re-link to a different app (shown on linked profiles). |
| Unlink App | Removes the linked app (shown on linked profiles). |
| Export Profile | Saves the profile as a .json file. |
| Delete | Removes the profile (with confirmation, not available on Default). |
Export and import
Right-click any profile → Export Profile. This saves the profile name and all its assignments as a .json file. The linked app is not exported because it is machine-specific. Re-link after import on a new machine.
To import, click ↓ Import Profile at the bottom of the accordion. If the name conflicts with an existing profile, you will be prompted: Copy (creates a new profile with a suffix) or Overwrite (replaces existing assignments, preserves the linked app).
Keyfire includes starter template packs. Importing a template adds its shortcuts to your current profile without overwriting anything already there. Import is always additive.
Accessing templates
- Click the Templates pill in the title bar (visible until dismissed).
- Go to Settings → Templates. Always available.
Available packs
Everyday office productivity shortcuts: email sign-offs, date stamps, navigation keys, common clipboard actions. Assigned to the Default profile under Ctrl and Ctrl+Shift layers.
Bare key shortcuts for CAD software. The most common commands on single keys: F = Fillet, X = Explode, H = Hatch, Z = Zoom Extents, A = Array, O = Offset, T = Trim, D = DimLinear. These use bare key Type Text macros in an app-linked profile. When you import this pack, Keyfire guides you through creating a new app-specific profile and linking it to your CAD application.
Shortcuts for sales and business development workflows. CRM navigation, email response starters, meeting confirmation templates, follow-up boilerplate. Assigned to the Default profile.
Search templates
Separately from the main packs above, the Quick Search overlay supports search templates: prefab snippet packs designed for use from the search bar. Import them in Settings → Templates.
Before importing the CAD pack, open your CAD software so it appears in the running processes list. The import flow will prompt you to pick it for the new app-linked profile.
Pausing suspends all hotkeys and text expansions until you resume. Nothing changes in the app. Your shortcuts stay configured. They just stop firing.
How to pause
- Tray icon: Right-click the Keyfire tray icon → Pause.
- Global pause hotkey: If configured in Settings, press your designated key combination from anywhere.
Paused state
When paused, the tray icon dims. No hotkeys or expansions fire. The status bar inside the app shows the paused state. Resume from the tray or by pressing the pause hotkey again.
If a Send Hotkey is in hold mode (tray icon red), pausing Keyfire automatically releases the held key first. You will not get stuck with a key held down.
Configuring the pause hotkey
Go to Settings → Global Pause Hotkey. Click the capture field and press your chosen key combination. This hotkey fires regardless of profile, app focus, or whether that combination is assigned to something else in Keyfire. The pause hotkey must include at least one modifier.
Licence
Enter and activate a Pro licence key, or deactivate an existing one. See the Licence page for full details.
Help & Documentation
Open the user guide (this page), replay the onboarding tour, or send feedback.
Templates
Permanent access to the starter template packs and search templates. Available here after you dismiss the title bar pill button.
Global Variables PRO
Define reusable text values referenced as {{name}} in expansions. Each variable has a name and a value. Update the value once and every expansion using it updates immediately.
Default date format
Sets the format used by the bare {date} token in expansions. Choose between DD/MM/YYYY, MM/DD/YYYY, and YYYY-MM-DD. Explicit-format date tokens ({date:DD/MM/YYYY} etc.) are unaffected.
Privacy & Security
| Setting | Description |
|---|---|
| Anonymous telemetry | Toggle the once-daily anonymous summary. See Telemetry below for what is sent. |
| Shared Config | Point Keyfire at a cloud folder to sync your config across machines. |
| Reset clipboard storage | Wipes all clipboard history. Cannot be undone. |
| Config folder | Open the folder containing your config and log files. |
| Open logs folder | Open the trigr.log file location. Attach to bug reports. |
Telemetry
Keyfire sends a once-daily anonymous summary so we can see how the beta is used. It contains:
- Counts of actions fired by type (expansions, hotkeys, macros)
- Counts of items in your library (assignments, expansions, etc.)
- Your plan tier (Free or Pro)
- The Keyfire version
No content, no identifiers, no IP logging. One click in Settings turns it off forever.
Clipboard
| Setting | Description |
|---|---|
| History retention | Days to keep clipboard history. Free: up to 7. Pro: up to 30. |
| Exclusions | Process names to skip clipboard capture from. Useful for password managers. |
| Clear Clipboard History | Deletes all stored clipboard items. Cannot be undone. |
General
| Setting | Description |
|---|---|
| Start with Windows | Start Keyfire automatically when Windows starts. Launches to the system tray. |
| Enable macros on startup | Whether hotkeys are active immediately on launch or start paused. |
| Theme | Light, Dark, or System. System follows your Windows theme preference. |
Global Pause Hotkey
Click the capture field and press any key combination to set it as the global pause / resume toggle. Must include at least one modifier. Bare keys cannot be used as the pause hotkey.
Quick Search
| Setting | Description |
|---|---|
| Search overlay hotkey | The hotkey to toggle Quick Search. Default Ctrl+Space. |
| Show all items when empty | Whether to show all assignments when the search field is blank. |
| Close after firing | Automatically close the overlay after executing a search result. |
| Include autocorrect | Whether autocorrect entries appear in search results. |
Hold trigger threshold PRO
How long you must hold a key before the hold action fires. Adjustable between 200ms and 700ms. Default 350ms.
Compatibility
| Setting | Description |
|---|---|
| Default input method | Global default for Type Text actions. Direct (simulated keypresses) or Clipboard (paste via clipboard). Individual assignments can override. |
| Macro speed | Preset timing for macro execution. Safe (maximum compatibility), Fast (reduced delays), Instant (minimal delays), or Custom (manual slider control). |
| Keystroke delay | Milliseconds between simulated keystrokes. Lower is faster but may drop characters in slow apps. |
| Pre-execution delay | Milliseconds before the first keystroke of an action. Gives the target app time to receive focus. |
| Double-tap window | Milliseconds to wait for a second press before firing the single-press action. Default 300ms. |
Backup & Restore
Keyfire automatically creates timestamped backups of your config and maintains a last-known-good copy. If the main config becomes corrupted, Keyfire restores from the best available backup on startup.
| Action | Description |
|---|---|
| Export Config | Save your full config as a .json file via a file dialog. |
| Import Config | Load a previously exported config, replacing the current one. |
| View Backups | Expand the accordion to see all automatic backups with date, profile count, and assignment count. Click Restore to revert to any backup. |
Keyfire logs every hotkey, expansion, and macro fired, entirely locally in a SQLite database on your machine. View your stats in the Analytics tab in the title bar.
Free analytics
Available to all users:
| Metric | Description |
|---|---|
| Today | Actions fired and time saved today. |
| Last 7 Days | Actions fired and time saved in the last week. |
| All Time | Total actions and total time saved since install. |
| Best Day / Best 7 Days | Your highest single-day and rolling 7-day records. |
| Breakdown | Percentage split between Expansions, Hotkeys, and Macros with visual bars. |
Pro analytics
Pro users get additional detailed analytics:
| Feature | Description |
|---|---|
| 14-Day Activity Chart | Daily bar chart showing actions fired per day over the last two weeks. Hover for exact numbers. |
| Hourly Heatmap | 7-day grid showing your most active hours. Gold intensity = more activity. Helps you understand your productivity patterns. |
| Per-Assignment Breakdown | Ranked table of your top 50 most-used assignments. Sort by most used, most time saved, or A to Z. Shows trigger, label, type, fire count, and time saved. |
| Streaks | Current consecutive-day streak and longest streak ever. A day counts if at least one action was fired. |
| CSV Export | Download your full action log as a CSV file for analysis in Excel or other tools. |
Time saved calculation
Keyfire estimates time saved per action type: expansions = character count × 0.3 seconds, hotkeys = 3 seconds, macros and AHK scripts = 5 seconds. These are conservative estimates of the time each action saves versus doing it manually.
Reset
Click Reset Statistics at the bottom of the analytics panel to delete all data and start fresh. Cannot be undone.
Analytics is your personal dashboard, stored locally only. Telemetry is the optional anonymous daily summary Keyfire sends home. They are entirely separate. Turn telemetry off any time in Settings → Privacy & Security.
Keyfire is free to use with all core features included. A Pro licence unlocks additional capabilities including formulas, hold triggers, multiple variants per expansion, image expansions, global variables, auto-switching app profiles, extended clipboard retention, and detailed analytics.
Activating a licence
Beta licences
During the beta period, Pro licences are free and request-based. Request one from the Upgrade modal inside Keyfire. We email a key to the address you supply, normally within a day. Beta keys have a 30-day expiry and work on unlimited machines while the beta runs.
Deactivating
Click Deactivate Licence in the Licence section to remove the Pro licence from this machine. Post-beta this will free up an activation slot for use on another device.
What Pro unlocks
| Feature | Free | Pro |
|---|---|---|
| Hotkeys, macros, AHK, mouse, double-press | Yes | Yes |
| Text expansions, dynamic tokens, fill-ins | Yes | Yes |
| Profiles (create, manage, link) | Yes | Yes |
| Quick Search, radial menus, clipboard manager | Yes | Yes |
| Profile auto-switch on app focus | Not included | Yes |
| Hold trigger | Not included | Yes |
Formulas ({=expr}, {if}…{endif}) | Not included | Yes |
| Multiple variants per expansion | First only | All |
| Image expansions | Not included | Yes |
| Global variables | Not included | Yes |
| Clipboard retention | Up to 7 days | Up to 30 days |
| Analytics | Basic | Full dashboard + CSV export |
A hotkey is not firing
Look for the Keyfire icon in the system tray. Dimmed icon means paused. Right-click and resume. No icon means not running. Open it from Start.
The assignment may exist in a different profile. Check which profile is active (green dot in the accordion) and confirm your assignment is there.
Ctrl+E and Ctrl+Shift+E are different layers. Make sure you are pressing exactly the right combination. One being assigned does not affect the other.
Some apps register global hotkeys that take priority over Keyfire. If the issue is app-specific, try a different key combination for that shortcut.
A text expansion is not triggering
Triggers are case-sensitive. /sig and /Sig are different. Also make sure you are not typing the trigger immediately after other characters. It needs to be a standalone sequence.
Some apps intercept keystrokes in unusual ways. Open the expansion editor and switch the input method to Clipboard. This pastes the expansion rather than typing it character by character, which is more reliable in complex apps.
A formula is rendering as «error: …»
Identifiers are case-sensitive. If your fill-in is labelled Name but the formula uses name, it will fail. Re-check the spelling. Multi-word labels need to match exactly.
String literals in formulas use double quotes, not single quotes. upper("hi") is correct. upper('hi') will fail to parse.
SmartScreen warning on install
Expected for new apps that have not built up a Windows reputation. Click More info → Run anyway. You should see Publisher: Node Group Ltd in the dialog, confirming the installer is genuine. The warning fades once Microsoft has seen enough installs from our signed builds.
Something crashed or behaved unexpectedly
Go to Settings → Open Logs Folder and find trigr.log. The log records what Keyfire was doing at the time. Attach it to a feedback form submission or email it to admin@keyfire.app.
Keyfire uses atomic config writes with three-tier recovery. If your config file becomes corrupted, Keyfire restores from the most recent backup automatically on next launch. Your assignments should survive.
Shortcuts stopped working globally
Keyfire uses a Windows keyboard hook to capture global keypresses. In rare cases Windows can disable hooks under high system load. The heartbeat monitor should detect this and reinstall the hook automatically. If shortcuts stop working, right-click the tray icon and restart Keyfire.
Gaming & anti-cheat
It might. Keyfire uses a low-level Windows keyboard hook (WH_KEYBOARD_LL) to capture global keypresses. This is the same technique that tools like AutoHotkey, Razer Synapse, and Logitech G Hub use. Anti-cheat systems including Vanguard (Valorant), Easy Anti-Cheat (Fortnite, Apex Legends), and BattlEye (PUBG, Rainbow Six Siege) actively scan for this type of hook and can flag or ban accounts when they detect it, even if you are not using Keyfire to gain any in-game advantage.
If you play competitive online games: close Keyfire before launching the game. Right-click the tray icon and select Quit to ensure the hook is fully removed before the anti-cheat driver loads.
Keyfire is intended for productivity automation. Use while playing online multiplayer games may violate the game's terms of service and trigger anti-cheat systems, potentially resulting in account bans. Users assume all responsibility for such use.