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.
Recording captures mouse triggers too. While recording is armed, press a modifier plus any mouse button (for example Alt + right click), a modifier plus a scroll tick, or a bare middle or side button. Bare left and right clicks are never captured, so you can still click around the app, including the Recording button to cancel. The captured click does not reach the app under your cursor.
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. There is one more safeguard: a bare mouse remap only fires while your cursor is actually over a window of the linked app. Move the cursor onto another app and the button behaves normally, even if the linked app still has focus.
Double press and hold on mouse buttons
Mouse buttons support the same three press modes as keyboard keys: single press, double press (PRO), and hold (PRO). Select a button and use the Single / Double / Hold pills in the editor. Scroll wheel triggers are single-press only. See Trigger Modes for how the timing works.
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.
Hold on mouse buttons
Hold triggers work on all five mouse buttons as well, with the same threshold and the same rules. A quick click fires the single-press action, or passes the click through to the app if nothing else is assigned, so a hold-mapped button still behaves normally for fast clicks. Scroll wheel triggers cannot have a hold action because a scroll tick has no press and release to time.
While a button has a hold action, press-and-drag with that button is taken over by the hold timer in the contexts where the trigger applies. Keep drag-heavy buttons (usually left click) free of hold actions.
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.
Hold-only key indicator
Keys assigned only to a hold action (no single or double press) show a small stopwatch glyph on the keyboard canvas. This makes them easy to spot at a glance versus keys with a regular single-press action.
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.
Mouse clicks can also be combined with modifiers. Press Record and perform the combo, for example Shift+Left Click, and Keyfire captures it exactly. On playback the modifiers are held around the click, so the target app sees a genuine modified click. Bare left and right clicks cannot be captured live (you need them to operate the recorder itself); assign those from the pill buttons instead.
Modifier+click combos fire in normal mode. Hold and repeat modes currently send the click without its modifiers. Side buttons (Side 1 and Side 2) work as triggers but are not yet available as Send Hotkey outputs.
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.
Already running? It comes to the front
If the app is already open, firing the action brings its existing window to the front (restoring it if minimised) instead of starting a second copy. The window stays on whichever monitor it is currently on. This applies wherever the launch fires from: a hotkey, the radial menu, Quick Search, or an Open App macro step.
Two cases always launch fresh: Open App macro steps that pass launch arguments, and documents opened via their default app. Store apps keep their own single-window behaviour.
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
The + Add Step menu groups steps into categories. Record Macro sits pinned at the top of the menu and Run AHK Script at the bottom.
| Category | Step types |
|---|---|
| Record Macro | Records your keyboard and mouse, then replays the sequence as a single step. See the Macro recorder page. |
| Existing Action | Trigger calls another macro or action (up to 5 nesting levels). Text Expansion fires an expansion by its trigger string. |
| Type & Keys | Type Text types a string at the cursor, full Unicode support. Dynamic Text adds token replacement at fire time (date, time, clipboard, selection and formula tokens). Press Key sends a keypress or combo. Copy to Clipboard, Paste Clipboard and Select All send Ctrl+C, Ctrl+V and Ctrl+A. |
| Mouse | Click Mouse sends a mouse click, with separate Down and Up variants so you can script drags. Click at Position moves the cursor to screen coordinates and clicks. Mouse Scroll scrolls up, down, left or right by a set number of notches. |
| Open & Play | Open App, Open Folder and Open URL launch things mid-macro, with a monitor picker for where the window lands. Play Audio File and Play Video File open a media file in your default player, also with a monitor picker. |
| Files | Create Folder makes a new folder, with naming prompts, template contents and automatic numbering. Copy Files and Move Files send your Explorer selection or a wildcard match to a destination folder. Sort Files (Pro) routes files into folders based on a code in the filename. See the Files steps section below. |
| Timing | Wait (ms) pauses for a set time. Wait for Input pauses until a chosen mouse or key event. Wait for Window pauses until a matching window is in the foreground. |
| Window | Focus Window brings an app to the foreground. Minimise Window, Maximise Window and Resize Window control a specific window. Minimise All and Restore All act on every open window. |
| System | Change Volume sets, nudges or mutes the system volume. Control Panel opens the Windows Control Panel. Sleep Computer, Lock Computer, Log Off and Shut Down Computer perform the matching Windows action. |
| Run AHK Script | Executes an AutoHotkey v1 or v2 script. Waits for completion before the next step. |
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.
Cancelling any macro
Press Esc at any point during a running macro to abort it. This applies universally: looped macros, one-shot macros, recorded sequences, long Wait steps, anything mid-flight. The macro stops at the next event boundary, which is usually within milliseconds. Useful as a kill switch when a macro is running away or you just changed your mind. Long Wait steps inside a macro are chunked so they honour the cancel request promptly rather than blocking for their full duration.
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.
System steps
Change Volume can set an exact level from 0 to 100, increase or decrease by an amount, or mute. The native Windows volume display appears so you can see the change land.
Sleep Computer, Log Off and Shut Down Computer show a confirmation dialog before they run, so a mis-fired macro cannot shut your machine down unprompted.
Window steps
Minimise Window, Maximise Window and Resize Window each take a target window via the Pick Window dropdown. Leave the target empty to act on whichever window is in the foreground when the step runs. Resize accepts a width and height, plus an optional new X and Y position.
Open App, Open Folder and the media steps already wait for their window to be placed before the next step runs. But if a macro types text before an app has finished loading, the characters can still get dropped. Add a Wait (ms) step of 500 to 1000ms after an Open App step to give it time to settle.
Files steps
The Files category automates the folder work you would otherwise do by hand in Explorer. All three steps understand your current Explorer window: they can read which folder you have open and which files you have selected, including individual tabs on Windows 11. Transfers use the native Windows file operation, so you get the standard progress dialog and everything is recoverable from the Recycle Bin.
Create Folder makes a new folder. Point it at a picked location, or leave it on the current Explorer folder to create wherever you are working. Extras:
- Ask for the name when it runs: the macro pauses and prompts you for the folder name. Cancelling the prompt aborts the macro.
- Template folder: the contents of a chosen template folder are copied into the new folder, so a "New Project" folder can arrive pre-filled with your standard subfolders and starter files.
- Automatic numbering: put
{inc}in the name and Keyfire replaces it with the next free number in that location.{inc:3}zero-pads to three digits, so "Job {inc:3}" becomes "Job 007" when "Job 006" already exists. - Nested names like
Invoices/2026/Julycreate the whole path in one step.
Copy Files and Move Files transfer files to a destination. The source is either the files you currently have selected in Explorer, or a folder plus a wildcard pattern like *.pdf. The destination is a picked folder, or a named subfolder of the current folder: type "Processed" and the files land in a Processed subfolder next to where you are working. If the subfolder does not exist the macro stops, unless you tick create it if missing. Copy keeps your Explorer selection so you can chain another step after it; Move clears it.
Sort Files PRO files documents into the right folders based on a code in the filename. Tell it how to read the key (the first N characters, or a segment between separators), where to search for matching folders, and optionally a mapping table that routes specific codes to specific subfolders. Before anything moves, Keyfire shows you the full plan and asks for confirmation, then reports what it did. Files that have no matching folder are skipped and listed, never moved blind.
If Sort Files would place a file where one with the same name already exists, one prompt covers the whole run: Yes overwrites (the replaced files go to the Recycle Bin), No keeps both by adding a date and time suffix to the incoming file, and Cancel stops the sort. You can also preset the behaviour to always suffix or always skip in the step's settings.
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.
The Record Macro step inside any macro lets Keyfire capture a literal sequence of your input. Every keystroke, mouse click, drag, scroll, and movement is recorded with its original timing, then replayed later as part of the macro. Useful for any flow you can perform faster by hand than by chaining individual steps in the editor.
Recording a macro
What gets captured
- All key presses and releases, including modifiers.
- Mouse clicks, drags, releases, and scroll wheel events.
- Mouse cursor moves (downsampled to 60Hz for storage efficiency).
- The original timing between each event, replayed at the same cadence.
What does NOT get captured
- Synthetic events from other automation tools. The recorder ignores anything Keyfire itself generates, so a recording cannot loop into itself.
- Window focus changes. The recording replays into whatever window happens to be focused at the time, at the same absolute screen coordinates.
Stopping a recording
Three ways to stop a recording in progress:
- Click Stop on the recording pill.
- Press Ctrl+Shift+R from anywhere.
- Click Discard to throw away the recording entirely without saving.
Cancelling a replay
Press Esc at any point during replay to abort. Replay stops at the current event without firing any of the remaining ones.
Recordings capture real drag motion, so dragging an image in Excel, dragging files between folders in Explorer, drawing freehand strokes in Paint and similar click-and-drag flows all replay as drags rather than as clicks.
Limitations
The macro recorder is currently a literal-replay tool, which means:
- Mouse clicks replay at the exact screen coordinates you recorded. If you move or resize the target window between recording and replay, the clicks land at the original screen position rather than following the window.
- The radial menu does not fire during replay. It requires a real physical key press, not a synthetic one.
- Text input inside Keyfire's own Quick Search overlay does not replay. The overlay routes input differently from regular apps.
A future release will add an option to translate recorded coordinates into window-relative positions so macros survive window moves and resizes.
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
Tables
Insert a table from the editor toolbar: click the table button, hover the grid to pick a size up to 6 by 6, and click to insert. While your cursor is inside a table, a second toolbar row appears with controls to insert rows above or below, insert columns left or right, delete the current row or column, or delete the whole table.
- Tab moves to the next cell, Shift+Tab moves back. Tab in the last cell adds a new row.
- Drag the right edge of any cell to resize that column. Widths are saved with the expansion.
- When the expansion fires into a rich-text app (Word, Outlook, Gmail, eM Client) the table arrives with borders and your column widths. Plain-text apps receive the cells as tab-separated text, one line per row, which Word and Excel also accept as a table when pasted onwards.
Text colours and highlights
The toolbar palette button sets the text colour. The highlighter button next to it sets a background highlight, with twelve colours plus a None swatch to remove a highlight. Both carry through to rich-text apps when the expansion fires.
Word decides how pasted content is styled using its own setting. If highlights or text colours vanish when an expansion fires into Word, open File > Options > Advanced > Cut, copy and paste and set Pasting from other programs to Keep Source Formatting. The same panel's Use smart cut and paste option can add a stray space before pasted content, and can be switched off there too. Word also substitutes its own nearest standard highlight colour rather than the exact shade.
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.
Import from other tools
Already using another text expander? The Import From menu above the expansion list reads export files from four tools and converts their entries into Keyfire expansions. Imported entries land in an Imported category so you can review them before mixing them into your own sets.
| Tool | File | What converts |
|---|---|---|
| Espanso | .yml | Match triggers and replacements, including multi-trigger entries. |
| AutoHotkey | .ahk | Hotstrings (::btw::by the way style). Script logic beyond hotstrings does not convert. |
| TextExpander | .csv | Snippet abbreviations and content from a CSV export. |
| Text Blaze | .json | Snippets including forms (become fill-in fields), formulas, and date commands. |
Anything that cannot be converted cleanly is flagged during the import, so you know exactly which entries need a manual check.
Selecting multiple expansions
Click the check circle on any expansion row to start a selection, or hold Ctrl and click rows. Hold Shift and click to select a range. A toast shows the selection count with a bulk Delete action and a Select all in view shortcut that covers the current category or search results.
Autocorrect PRO
The Autocorrect tab fixes typos as you type: your own misspelling list, two bundled dictionaries, and automatic fixes for stray capitals. It has its own page in this guide. See Autocorrect in the sidebar.
Use the All / Text / Image filter pills above the expansion list to find expansions by type.
Autocorrect watches for complete words and replaces known misspellings with the right spelling, in any application. A correction fires the moment you finish a word with Space, Enter, Tab or punctuation. The replacement happens in a single input burst, so it never interrupts your typing rhythm.
Find it under Text Expansions → Autocorrect. The sidebar inside the tab has seven sections: Your Corrections, Common Typos, Extended Dictionary, Days Of The Week, Symbols, Emoji, and Autocorrect Settings. The master on/off switch lives at the top of Autocorrect Settings, and each bundled pack has its own switch too.
Your corrections
Each entry is one correct word with as many misspellings as you like. Click + New Correction, type each misspelling and press Enter or comma to add it as a chip, then enter the correct word and save.
- Your entries always win over the bundled dictionaries, so you can override any built-in correction by adding the same misspelling with your own replacement.
- A misspelling belongs to one correct word. Adding it under a second word moves it there.
- Corrections work in any language. The bundled dictionaries are English, but your own entries can be anything.
- Use the search box to filter a long list, and the Import CSV and Export CSV buttons in the sidebar to back up or share your corrections. The file format is one
misspelling,correctionpair per line.
Case follows what you typed
Corrections keep your capitalisation: teh becomes the, Teh becomes The, and TEH becomes THE. A lowercase typo takes the stored correction exactly as written, so entries like im → I'm keep their intended capitals.
Bundled packs
| Pack | What it covers |
|---|---|
| Common Typos | Around fifty everyday slips: teh, adn, dont, becuase and friends. Also fixes a lone lowercase i to I. |
| Extended Dictionary | Over four thousand English misspellings, each mapped to a single unambiguous correction. Browse or search the full list inside the tab. |
| Days Of The Week | monday becomes Monday, and so on. Month names are deliberately left out because words like may and march have other meanings. |
| Symbols | Arrows, fractions, comparison signs, currency and more. Type (c) for ©, -> for →, 1/2 for ½, >= for ≥, (eur) for €. Superscripts and subscripts attach to the word you are typing: m^2 becomes m² and co_2 becomes co₂. |
| Emoji | Around seventy-five common emoji by name in brackets: (smile), (thumbsup), (fire), (rocket), (heart). Browse the full list inside the tab. |
Every pack switches on and off independently, and they all start switched off so nothing fires until you opt in. British and American spellings are both respected: corrections follow the shape of what you typed, so recogise becomes recognise and recogize becomes recognize. Neither dictionary ever changes a correctly spelled word from one variant to the other.
The Extended Dictionary is derived from Wikipedia's list of common misspellings, used under the CC BY-SA licence.
Switch off or customise any single entry
Hover any entry in a bundled pack and click the small ✕ on a misspelling chip to switch that one entry off without losing the rest of the pack. Switched-off entries stay in the list, shown struck through, with an undo arrow to restore them.
To change what an entry produces, hover it and click Customise. The entry is copied into Your Corrections ready to edit, and because your own entries always win, your version takes over from the bundled one.
Typing fixes
Three automatic fixes live in Autocorrect Settings, each with its own toggle:
| Fix | What it does |
|---|---|
| Fix double capitals | HEllo becomes Hello. Words like IDs or PCs can be protected via the exceptions list. |
| Fix accidental Caps Lock | tHE becomes The and Caps Lock switches off. Only fires while Caps Lock is actually on. Works whether or not you held Shift for the first letter, and dictionary typos typed with Caps Lock on are corrected in the same pass. |
| Capitalize sentences | A lowercase word straight after a full stop, question mark, exclamation mark or new line gets its first letter capitalised. |
Sentence capitalisation treats every full stop after a word as a sentence end, so the word after an abbreviation like approx. will be capitalised too. Toggle the fix off if you write abbreviation-heavy text, or press Backspace to undo any single fix.
Undo any correction with Backspace
Press Backspace immediately after a correction fires and your original typing comes back, including the space or punctuation you ended the word with. Only the very next keystroke counts: once you type anything else, Backspace goes back to deleting normally.
Keyfire also learns from your undos. Undo the same correction twice and a banner appears at the top of the Autocorrect tab asking whether to stop correcting that word. Nothing is ever changed without your say so: choose Stop correcting to switch that entry off, or Keep to leave it alone and stop being asked.
Excluded apps
Add apps to the excluded list in Autocorrect Settings and autocorrect will never fire while they are in the foreground. Recommended for code editors, terminals, and games, where deliberate non-words are normal. Type a process name or pick from your open apps.
Text expansions have their own separate exclusion list under Settings → Text Expansions, so you can silence expansions in an app while keeping autocorrect running there, or the other way round.
Alongside Word and other built-in autocorrect
Keyfire and Word can both stay on. Keyfire completes its correction before the finishing keystroke reaches the application, so Word finds nothing left to fix. The one overlap is a word ending in ! or ? where both tools know the same typo; if you ever see a mangled word there, exclude that app or turn off the matching option in the other tool.
Over AnyDesk, TeamViewer or Remote Desktop, typo corrections work normally, but the Caps Lock fix cannot: remote tools translate your typing without syncing your Caps Lock state to the remote machine. Test the Caps Lock fix at the keyboard itself.
If a word is both an expansion trigger and a listed misspelling, the expansion fires. Deliberate triggers always beat passive correction.
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. |
Named values with {set}
For longer snippets, {set name = expr} declares a named intermediate value you can reuse in later formulas, so you compute something once instead of repeating the expression. The {set} token itself produces no output.
{ifset name cond}…{endif} works like {if} but tests a value declared with {set}. Order is forgiving: a {set} can reference another {set} declared further down the snippet, and sets that depend on an {ifset} branch resolve after the branch does.
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.
Quick Actions
A quick action is an action without a key bound to it. Instead of living on a key, it lives in your searchable library: fire it by name from Quick Search, add it to a radial menu wedge, or give it a voice phrase. Quick actions are ideal for things you run a few times a week, not worth spending a hotkey on but too fiddly to do by hand.
Quick actions can open an app, a URL, or a folder, or run a full macro sequence. Create one from the Templates pill in the title bar, under the Quick Actions tab. Group them into categories to keep search results tidy.
Search templates
The Quick Search overlay also exposes search templates, prefab snippet packs you can import. Templates live in Settings → Templates.
Moving the search bar
The bar does not have to live in the centre of the screen. Drag the small grip handle at its left edge to put it anywhere you like. Keyfire remembers the spot across restarts, per machine, and keeps it proportional on whichever monitor you open it from.
- Move: hold left click on the grip handle and drag.
- Reset: double click the grip handle, or use Settings → Quick Search → Search bar position → Reset position.
If you park the bar near the bottom of the screen, the results list opens upwards instead of downwards so it never runs off the monitor.
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. On fresh installs the default is Ctrl+Shift+Space; change or clear it in the radial editor. The wheel appears under your cursor. Move the mouse over a wedge to highlight it, then click, or press the wedge's number key. 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.
Quick Record lets you record a one-off macro and replay it on demand using global hotkeys, without ever opening the macro editor. The recording persists across app restarts in a single slot you can overwrite at any time. Useful for repetitive tasks you only need for an hour, a day, or a single project.
Quick Record is opt-in. Because it captures keystrokes globally, you enable it explicitly in Settings → Quick Record by setting at least one hotkey. Until then, the hotkeys are unset and Keyfire captures nothing.
Setting up the hotkeys
Go to Settings → Quick Record. Three independent hotkeys to configure:
| Hotkey | What it does |
|---|---|
| Record | Press once to start recording. Press again to stop. The recording is saved into the Quick Record slot, overwriting any previous one. |
| Play | Replay the saved recording once. No-op if the slot is empty. |
| Loop | Replay the saved recording continuously. Press the same hotkey again to stop, or press Esc. |
Click Set hotkey next to each row, press your chosen combo, then click Save. Each combo must use at least one modifier (Ctrl, Shift, Alt or Win). Keyfire warns you if the combo is already in use by another feature.
Ctrl+Alt+R for Record, Ctrl+Alt+P for Play, Ctrl+Alt+L for Loop. Avoid Ctrl+Shift+R and Ctrl+Shift+T because they collide with hard refresh and reopen-closed-tab in every Chromium-based app.
Recording
Press the Record hotkey from anywhere. The bottom-centre recording pill appears showing elapsed time and event count. Perform whatever you want to capture, then press the Record hotkey again (or Ctrl+Shift+R) to save.
The recording is now in your Quick Record slot, persisted to disk. It survives app restarts, version updates and machine reboots. There is only one slot, so recording again replaces it.
Playing
Press the Play hotkey to replay the saved recording exactly as you performed it. Press Esc mid-replay to abort.
Looping
Press the Loop hotkey to replay the recording continuously until you press the same hotkey again, press Esc, or pause Keyfire from the tray. Roughly half a second of breathing room sits between each iteration. The Play and Record hotkeys are ignored while the loop is running so the input streams cannot collide.
Clearing the slot
In Settings → Quick Record → Saved recording, click Clear to delete the recording. The hotkeys stay configured, so the next time you press Record you simply start fresh.
Quick Record stores ONE recording globally, triggered by hotkeys, no editor required. The Macro Recorder step stores a recording inside a specific macro you build in the editor, fires as part of that macro's flow, and can be combined with other step types in the same macro.
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 newest first, with your Saved and Pinned tiers always at the top. A preview pane sits on the right at all times. Select any item to inspect it, and drag the pane's left edge to resize it.
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 and appear in the quick paste popup. See Pinned and Saved tiers below. |
| Save | Save items (bookmark icon) to keep them forever in a tier above Pinned in the main panel. Saved items are main-panel only and can be organised into folders on Pro. |
| Saved folders (Pro) | Create folders inside the Saved section to organise saved clips. See Saved folders below. |
| Keyboard control | Arrow keys move between items, Enter or Ctrl+C copies, Delete removes. See Keyboard control and multi-select below. |
| Search | Filter items by text content. Combine with tag filter pills and source app dropdown. |
| Rich text | Formatted content keeps its bullets, bold, links and colour when pasted into rich editors. See Rich text stays formatted below. |
| 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 (Pro) | Text inside captured images is extracted automatically and becomes searchable and copyable. See Text from images below. |
| Timeline grouping | Items grouped by Saved, Pinned, Today, Yesterday, This Week, This Month, Older. Click any group header to collapse or expand it. Your layout is remembered. |
| 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. |
Pinned and Saved tiers
The clipboard has two independent tiers above your normal history:
- Pinned: items you want to keep handy across both surfaces. Click the pin icon on any item to pin it. Pinned items appear at the top of the main clipboard panel and at the top of the quick paste popup (Ctrl+Shift+V). They never expire under the retention policy.
- Saved: a higher tier above Pinned, available in the main clipboard panel only. Right-click any item and choose Save, or use the bookmark button in the preview pane. Saved items appear at the top of the main panel above Pinned but do not show in the quick paste popup. Think of Saved as your permanent library and Pinned as fast paste targets. Saved items never expire.
An item can be both pinned and saved. The two flags are independent toggles. Both tiers appear as their own sidebar buckets in the main panel for quick filtering, and items within each tier can be drag-reordered into your preferred order. If you used an earlier version, Saved is the tier previously called Starred. Everything you starred is still there.
Saved folders (Pro)
Pro users can organise the Saved tier into folders. Click + Add Folder in the panel sidebar, type a name and press Enter. Folders appear as their own rows in the sidebar and as sub-sections inside the Saved area.
To file an item into a folder, drag its card onto the folder's header, or right-click the item and choose Move to Folder. Dragging onto the main Saved header moves an item back out of its folder. Hold a drag over a collapsed folder for a moment and it springs open. Double-click a folder's name to rename it, and right-click its header to rename or delete it. Deleting a folder never deletes the items inside; they return to the main Saved area.
Folder names are encrypted at rest with the same AES-256-GCM protection as your clipboard content. If your Pro licence lapses, existing folders keep working; only creating new ones requires Pro.
Text from images (OCR) (Pro)
Keyfire reads the text inside images you copy. When a new screenshot or image lands in your history, its text is extracted automatically in the background and stored encrypted alongside the image. Select an image and use Extract text in the preview pane to view and copy it.
With Search inside images enabled, the panel and quick paste search also match against this extracted text. A result found inside an image is marked with a small chip so you can see why it matched.
Both behaviours have their own toggles in Settings → Clipboard: automatic extraction and search inside images. On your first launch as a Pro user, Keyfire also runs a one-off pass over images already in your history, with progress shown in the status bar.
Very small images (under 64x64 pixels) are skipped. Coloured or low-contrast text, such as red text in a document, is enhanced automatically before extraction for better accuracy.
Extraction uses the Windows OCR engine and works fully offline. It reads the languages you have installed as Windows language packs. For non-English text, install the matching pack in Windows Settings → Time & Language → Language.
Copying floats an item to the top
Clicking Copy on an item in the panel moves it to the top of your history. The item is not duplicated; its position simply updates, so the things you actively reuse sit nearest the top. Saved and pinned items stay in their own sections when reused. The preview pane's Last copied field shows when an item was last put on your clipboard.
Pasting from the quick paste popup deliberately does not reorder your history. Copy five things in a row and you can paste them back one after another without the list shuffling underneath you.
Keyboard control and multi-select
The panel is fully keyboard-navigable. With the panel open:
| Keys | Action |
|---|---|
| ← → ↑ ↓ | Move the selection between items. The preview pane follows. |
| Enter or Ctrl+C | Copy the selected item to your clipboard. |
| Delete | Delete the selected item, or the whole multi-selection. |
| Ctrl+click | Build a multi-selection. Right-click inside it for bulk Save, Move to Folder and Delete. |
| Ctrl+A | Select every visible item. |
| Esc | Clear the multi-selection, then the item selection. |
You can also right-click any item and choose Copy. Every copy action shows a small confirmation toast.
Clear All preserves your tiers
The Clear All button in the panel toolbar and the Clear Clipboard History button in Settings both remove regular history only. Pinned and saved items survive, including everything inside folders. The confirm dialog in Settings makes this explicit.
Rich text stays formatted
When you copy formatted content from Word, Outlook or a browser, Keyfire stores the formatting alongside the plain text. Pasting into a rich editor such as Gmail, Word or Slack reproduces the original bullets, bold, links and colour. Pasting into a plain-text app such as Notepad falls back to plain text automatically.
To paste without formatting on purpose, use the Paste plain button on the quick paste overlay, or Copy plain in the main panel. Both are one-off overrides. The stored formatting is kept for next time.
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 list pane shows compact rows, the preview pane shows the full content with metadata and action buttons (Pin, Delete, Paste, Edit). Only Pinned items get promoted here; Saved items live in the main panel only. The swap button in the corner of the list pane switches which side each pane appears on, and the choice is remembered.
The popup can also be moved. Drag the grip handle next to the search box to put it anywhere on screen, and Keyfire remembers the spot across restarts, per machine. Double click the grip to return to the default position, or use Settings → Clipboard → Popup position → Reset position.
While the overlay is open, your typing goes to its search box, the same way the Windows clipboard viewer (Win+V) behaves. You can start typing to search the instant you press the hotkey. The app behind the overlay does not receive those keystrokes, though shortcuts using Ctrl, Alt or Win still pass through to it. Close the overlay with Esc or a click outside to resume typing in your app.
Quick paste inside fill-in prompts
Ctrl+Shift+V also works while a Keyfire fill-in prompt is open. The overlay appears as usual, and the item you pick is inserted into the fill-in field you were typing in, not the app behind it. Focus returns to the field when the overlay closes.
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 and saved 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, and so are your Saved folder names. 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 sensitive sources of any kind.
Password managers need no setup at all. When 1Password, Bitwarden, KeePass and similar apps mark a copy as private, Keyfire honours the flag and never records it, exactly as the Windows clipboard history does. There is no setting to override this.
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. |
Quick Record
The three global Quick Record hotkeys. All are off until you set them, and each must include at least one modifier.
| Setting | Description |
|---|---|
| Record hotkey | Starts a temp-macro recording from any app. Press it again to stop and save. Suggested: Ctrl+Alt+R. |
| Play hotkey | Replays the saved recording once. Suggested: Ctrl+Alt+P. |
| Loop hotkey | Replays the saved recording on repeat until you press it again or hit Esc. Suggested: Ctrl+Alt+L. |
See the Quick Record page for the full workflow.
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.
A macro or recording is running away
Press Esc. This cancels any macro currently in flight, including looped macros, one-shot macros, recorded sequences, and macros inside long Wait steps. The cancel is honoured at the next event boundary, usually within milliseconds. If Esc alone is not enough (e.g. another app captured the keystroke), right-click the tray icon and choose Pause, which stops everything immediately.
An old Trigr version keeps opening at startup
If your PC updated from an older Trigr version, Windows may still be launching the old app at boot and showing an update prompt every time. Update to the latest version once more and the fix is applied automatically: Keyfire repairs the startup entry on launch so the correct app starts with Windows from then on. If you still see Trigr listed in Windows Installed apps afterwards, it is safe to uninstall it. Keyfire is unaffected.
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.