Welcome to Keyfire
Visual hotkeys, macros, text expansion, and a clipboard manager that lives in your tray. No scripting, no config files.

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.

First time?

Head to Install & First Launch for the onboarding flow, then Quick Start to set up your first shortcut in under two minutes.

Install & first launch
Download, run the installer, take the tour. Five minutes start to finish.

Download

Grab the latest build from keyfire.app or directly from GitHub Releases. Two builds are available:

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.

SmartScreen warning

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.

Screenshot slot · Welcome screen The six-tile welcome modal with the gold Get Started button.

The onboarding tour

A five-step tour walks you through the main UI surfaces:

1
The keyboard canvas: where you click keys to assign actions.
2
The modifier bar: pick which layer you are mapping (Ctrl, Alt, Shift, Win, or combinations).
3
The assignments sidebar: every assignment in the active profile, grouped by modifier.
4
Text expansion and quick search: where snippets live and how to fire them.
5
The tray icon: pause, resume, and quit.

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:

ColourState
GoldRunning, hotkeys live
DimmedPaused (all shortcuts suspended)
RedA key is held or a repeat is active. Tooltip shows which key.
The interface
Five main areas. Here is what each one does.
Screenshot slot · Annotated main window Full app window with five labelled callouts: (1) Title Bar, (2) Profile Accordion, (3) Assignments Sidebar, (4) Keyboard Canvas, (5) Status Bar.

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.

Area tabs

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.

Quick start
Set up your first shortcut in two minutes. Pick the path that fits.

Option 1: text expansion (recommended starting point)

A text expansion replaces a short trigger you type with a longer phrase, in any app.

1
Click the Text Expansions tab in the title bar.
2
Click + New Expansion.
3
In the Trigger field, type a short abbreviation. For example /sig or /ty.
4
In the Expansion field, type the full text you want it to produce.
5
Click Save. Open any text field anywhere, type your trigger, and watch it expand.
Good trigger format

Prefix triggers with / or ; so they never fire mid-word by accident. Good examples: /addr, /sig, ;ty.

Option 2: hotkey

1
On the keyboard canvas, click a modifier button (for example Ctrl).
2
Click any key. The action panel opens on the right.
3
Choose an action type (Type Text, Open URL, Open App, Macro, etc.) and fill in the fields.
4
Click Save. Press the combo anywhere on your computer. It fires immediately.

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.

Hotkeys
Bind any key combination to any action. Works globally in every app.

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

1
Select a modifier layer using the buttons above the keyboard canvas.
2
Click the key you want to assign. The action panel opens.
3
Choose an action type, configure it, click Save. The key is now highlighted on the canvas.

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).

System shortcut conflicts

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.

Mouse hotkeys
Bind modifier + click combinations and side buttons to any action.

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.

Screenshot slot · Mouse canvas Mouse tab active with the silhouette visible. Modifier selector at the top and at least one assigned button highlighted.

Available mouse triggers

ButtonDescription
Left ClickStandard left mouse button
Right ClickStandard right mouse button
Middle ClickScroll wheel press
Side 1 / Side 2Side buttons (Mouse 4 and 5, if your mouse has them)
Scroll Up / Scroll DownScroll wheel direction. Fires once per scroll tick.

Setting up a mouse hotkey

1
Switch to the Mouse tab.
2
Select your modifier layer (Ctrl, Alt, Shift, etc.).
3
Click the mouse button on the silhouette. Configure and save as normal.
Bare mouse buttons

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.

Trigger modes
One key can fire three different actions depending on how you press it.

Every assignment can have up to three distinct actions on the same key, fired by different press patterns:

Setting up double press

1
Open any assignment in the action panel.
2
Click the Double pill above the action editor.
3
Configure the double-press action independently. It does not have to match the single-press type.
4
Save. Single press fires the first action, double-tap fires the second.

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).

Pro feature

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.

Three actions on one key

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
Instantly type any string at the cursor position.

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.

MethodWhen to use
Global defaultWhatever you have set in Settings → Compatibility. Suitable for most apps.
DirectFaster. Good for apps that process keys directly (games, CAD tools, DirectInput).
ClipboardPastes via clipboard. Most reliable in apps that intercept standard key input. May briefly affect clipboard contents.
Unicode and special characters

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
Fire a specific keypress or combo into the active window.

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.

Screenshot slot · Send Hotkey panel with Hold Mode Action panel for a Send Hotkey assignment. Hold Mode toggle visible. Show the tray icon in red "held" state.

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:

Hold mode is for polling apps, not text

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.

SettingDescription
IntervalMilliseconds 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 vs Repeat

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 / URL / Folder
Launch applications, websites, and folders instantly.

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%.

Combining with macros

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.

Macros
Chain multiple steps into a single keypress. Loop them if needed.

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.

Screenshot slot · Macro step builder Multi-step macro with at least 3 different step types. Drag handles on the left, step type labels, the full-width Type Text sub-row, the + Add Step button at the bottom, the loop toggle.

Available step types

Step typeWhat it does
Type TextTypes a string at the cursor position. Full Unicode support.
Dynamic TextLike Type Text, but with token replacement at fire time. Supports date, time, clipboard, selection, and formula tokens.
Press KeySends a single keypress or combo. For example Enter, Escape, Ctrl+V, Delete.
Click MouseSends a single mouse button click.
Click at PositionMoves the cursor to specific screen coordinates and clicks.
Wait (ms)Pauses for a specified number of milliseconds before the next step.
Wait for InputPauses until a specified mouse button or key event occurs.
Open App / URL / FolderSame as the standalone actions, callable as a step inside a macro.
Focus WindowBrings a specific open application window to the foreground.
Run AHK ScriptExecutes an AutoHotkey v1 or v2 script. Waits for completion before the next step.
Fire TriggerCalls another macro or action by its storage key. Up to 5 nesting levels.
Fire Text ExpansionFires an expansion by its trigger string. The expansion's resolution rules apply.

Building a macro

1
Click a key on the canvas, then choose Macro as the action type.
2
Click + Add Step and choose the step type.
3
Configure the step. Repeat to add more.
4
Drag the handle on the left of each step to reorder.
5
Click Save.

Macro looping

Below the Input Method row, the Loop section lets the macro repeat itself. Two modes:

An optional Delay between iterations smooths out fast loops. Press the same trigger again while a loop is running, and Keyfire cancels it.

Stop a runaway loop

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.

Add delays after opening apps

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.

AHK Script Runner
Run AutoHotkey v1 and v2 scripts from any hotkey. No AHK install required.

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

1
Click a key on the canvas, then choose AHK Script as the action type.
2
Select v1 or v2 using the version toggle at the top of the form.
3
Write your script body in the textarea. No hotkey labels or Return needed. Keyfire handles the trigger.
4
Click Save.

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.

BehaviourDescription
Re-triggerPressing the same hotkey again kills the previous AHK instance and starts a fresh one.
Macro stepAHK 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.
CleanupAll 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.

Actionv1 syntaxv2 syntax
Message boxMsgBox, Hello!MsgBox "Hello!"
Send keysSend, {Enter}Send "{Enter}"
Run appRun, notepad.exeRun "notepad.exe"
Existing AHK users

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
Type a short trigger and get a full phrase in return. Works in every 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.

Screenshot slot · Text Expansions panel The full expansions panel with category tabs at the top, a list of at least 4 expansion items with trigger badges and previews, and the + New Expansion button.

Creating an expansion

1
Switch to the Text Expansions tab.
2
Click + New Expansion.
3
Enter a Trigger (the short sequence you will type).
4
Enter the Expansion in the rich-text editor. Type plain text or use the toolbar to insert dynamic tokens, fill-ins, formulas, lists, and headings.
5
Optionally assign a Category. Click Save.

Trigger tips

Trigger modes

The expansion editor has two trigger modes:

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.

SettingDescription
Image pathFull path to a PNG or JPEG file on your machine.
Scale10 to 100%. Resizes the image before pasting. 100% uses the original size.
Trigger modeSpace (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.

Type filter

Use the All / Text / Image filter pills above the expansion list to find expansions by type.

Dynamic tokens
Insert live values into any expansion. Date, time, clipboard, selection, cursor position.

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.

Screenshot slot · Expansion editor toolbar Toolbar across the top of the expansion editor showing all the dropdown buttons: color, headings, lists, date & time, clipboard, fill-in, formula, cursor, variables.

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}Your default format from Settings
{date:DD/MM/YYYY}e.g. 06/04/2026
{date:MM/DD/YYYY}e.g. 04/06/2026
{date:YYYY-MM-DD}e.g. 2026-04-06
{date:D MMMM YYYY}e.g. 6 April 2026

Date parts

{dayofweek}e.g. Monday
{month}e.g. April
{year}e.g. 2026
{day}Day of month, e.g. 6

Time

{time:HH:MM}e.g. 14:32
{time:HH:MM:SS}e.g. 14:32:07
{isodate}e.g. 2026-04-06T14:32:07

Date math

{date:+1d}Tomorrow
{date:-1d}Yesterday
{date:+7d}Next week
{date:+1m}Next month

Append :FORMAT to use a specific format. For example {date:+1d:YYYY-MM-DD}.

Clipboard

Insert the current clipboard contents into your expansion.

{clipboard}Raw clipboard contents
{clipboard:uppercase}Uppercased
{clipboard:lowercase}Lowercased
{clipboard:trim}Whitespace trimmed
{clipboard:urlencode}URL-encoded for use in links

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.

{selection}The currently highlighted text
{selection:uppercase}Uppercased
{selection:lowercase}Lowercased
{selection:trim}Whitespace trimmed
{selection:urlencode}URL-encoded
Empty selection

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.

{cursor}Sets the final caret position

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
Pause the expansion, ask the user for input, then complete. Six field types.

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.

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.

Reuse panel

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.

Plain text only

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 PRO
Compute values inside your expansions. Math, string functions, conditional text.

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

TokenWhat 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.

Click any formula chip to edit the expression. The popover prefills with the current expression.

Supported values

Operators

CategoryOperators
Math+ - * / %
Comparison== != < > <= >=
Logical&& || !
String concat&
Grouping( )

Built-in functions

String

FunctionExampleResult
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

FunctionExampleResult
round(x)round(1.7)2
floor(x)floor(1.7)1
ceil(x)ceil(1.2)2
abs(x)abs(-3)3

Logic

FunctionExampleResult
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)}"

Errors render inline

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.

Rich text plus formulas

Expansions containing {if}…{endif} blocks render as plain text. {=expr} chips work in both plain and rich expansions.

Radial menus
Pop a wheel of actions over your cursor. Click a wedge to fire it.

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.

Screenshot slot · Radial menu over a target app A radial wheel with at least 6 wedges visible, each with an icon and label. Overlay sitting on top of another app like a browser or editor.

Building a radial menu

1
Switch to the Radial tab in the title bar.
2
Click + New Menu.
3
Give the menu a name and pick a hotkey to open it.
4
Add segments by clicking + Add Item. Each segment can hold an existing hotkey, expansion, or quick action.
5
Pick an icon (lucide or Simple Icons) and a label for each segment.
6
Save.

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.

Custom icons

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.

Clipboard manager
Everything you copy is searchable, taggable, and reusable. Locally stored, encrypted at rest.

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.

Screenshot slot · Clipboard panel Full clipboard panel with masonry tile grid, tag filter pills at the top, source app dropdown, and the search bar.

Features

FeatureDescription
Auto-taggingEach item is tagged as Text, Link, Email, Colour, Number, or Image based on its content.
Source appShows which app you copied from (Chrome, VS Code, Outlook, etc.).
PinPin important items so they stay at the top regardless of age.
SearchFilter items by text content. Combine with tag filter pills and source app dropdown.
Inline editingEdit any text-based clipboard item directly. Click Edit in the detail pane.
Image supportScreenshots and copied images are captured as PNG with full preview and zoom.
OCRCaptured images run through OCR. Extracted text becomes searchable and copyable.
Timeline groupingItems grouped by Pinned, Today, Yesterday, This Week, This Month, Older.
Storage indicatorShows the total size of your clipboard database in the panel toolbar.
Column toggleSwitch 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.

Excluded apps

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
A flat card grid instead of the keyboard canvas.

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.

Screenshot slot · List view active Full list view with the sidebar expanded. Multiple assignment cards in the responsive grid, modifier filter pills at the top with "Ctrl" selected, gold group header bar above the cards.

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.

Profiles
Separate shortcut sets for different contexts. Auto-switches per app.

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.

Screenshot slot · Profile accordion Profile accordion expanded with at least 3 profiles. One General (active, green dot), one App-Specific (Windows icon), one more. Right-click context menu open on a profile row.

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

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.

1
Right-click the profile row and choose Link to App.
2
Open the target app so it appears in the running processes.
3
Click Pick App and select it, or use Browse to find the .exe manually.
4
Click Confirm. The profile moves to the App-Specific group with a Windows icon.

To unlink, right-click and choose Unlink App.

Right-click options

OptionWhat it does
RenameEdit the profile name inline.
DuplicateCreates a full copy of the profile including all assignments.
Link to AppOpens the app picker (shown on unlinked profiles).
Change AppRe-link to a different app (shown on linked profiles).
Unlink AppRemoves the linked app (shown on linked profiles).
Export ProfileSaves the profile as a .json file.
DeleteRemoves 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).

Templates
Pre-built shortcut packs to get started fast.

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

Screenshot slot · Templates panel The template pack grid with the names, brief descriptions, and Import buttons.

Available packs

General / Office

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.

CAD / Engineering

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.

Sales / BD

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.

CAD pack: open your app first

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.

Shared config
One config across all your machines. Live-synced via your existing cloud storage.

Point Keyfire at a folder synced by OneDrive, Google Drive, Dropbox, or any cloud service. Keyfire writes its config to that folder instead of the local AppData location. Every other machine running Keyfire against the same folder sees the same hotkeys, expansions, and macros, refreshed automatically when the file changes.

How to set it up

1
Go to Settings → Privacy & Security → Shared Config.
2
Click Choose Folder and pick a folder inside your cloud-synced storage. Example: OneDrive/Keyfire.
3
Keyfire migrates your current config to the new location and starts watching it for changes.
4
On other machines, point Keyfire at the same folder. The shared config replaces the local one.

Cross-device conflict handling

When two machines edit the config at roughly the same time, Keyfire does a three-way merge per top-level section. Edits to different sections from different machines combine cleanly. Edits to the same section apply last-writer-wins on incoming. A toast confirms when a remote change has been merged in.

Teams use

Shared Config is also useful for teams. Point everyone at the same network folder and your support reps, ops teams, or designers all get the same shortcut library. Updates propagate live. No retraining needed.

Local config when sharing

Some settings remain machine-specific (linked app paths, telemetry opt-out, theme preference). Keyfire keeps those in a small trigr-local-settings.json on each machine, separate from the shared config.

Pause & resume
Suspend all shortcuts without closing Keyfire.

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

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.

Hold mode releases on pause

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.

Settings
Configure Keyfire's behaviour. Open with the cog icon in the title bar.

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

SettingDescription
Anonymous telemetryToggle the once-daily anonymous summary. See Telemetry below for what is sent.
Shared ConfigPoint Keyfire at a cloud folder to sync your config across machines.
Reset clipboard storageWipes all clipboard history. Cannot be undone.
Config folderOpen the folder containing your config and log files.
Open logs folderOpen 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:

No content, no identifiers, no IP logging. One click in Settings turns it off forever.

Clipboard

SettingDescription
History retentionDays to keep clipboard history. Free: up to 7. Pro: up to 30.
ExclusionsProcess names to skip clipboard capture from. Useful for password managers.
Clear Clipboard HistoryDeletes all stored clipboard items. Cannot be undone.

General

SettingDescription
Start with WindowsStart Keyfire automatically when Windows starts. Launches to the system tray.
Enable macros on startupWhether hotkeys are active immediately on launch or start paused.
ThemeLight, 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

SettingDescription
Search overlay hotkeyThe hotkey to toggle Quick Search. Default Ctrl+Space.
Show all items when emptyWhether to show all assignments when the search field is blank.
Close after firingAutomatically close the overlay after executing a search result.
Include autocorrectWhether 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

SettingDescription
Default input methodGlobal default for Type Text actions. Direct (simulated keypresses) or Clipboard (paste via clipboard). Individual assignments can override.
Macro speedPreset timing for macro execution. Safe (maximum compatibility), Fast (reduced delays), Instant (minimal delays), or Custom (manual slider control).
Keystroke delayMilliseconds between simulated keystrokes. Lower is faster but may drop characters in slow apps.
Pre-execution delayMilliseconds before the first keystroke of an action. Gives the target app time to receive focus.
Double-tap windowMilliseconds 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.

ActionDescription
Export ConfigSave your full config as a .json file via a file dialog.
Import ConfigLoad a previously exported config, replacing the current one.
View BackupsExpand the accordion to see all automatic backups with date, profile count, and assignment count. Click Restore to revert to any backup.
Analytics
Track how much time Keyfire saves you. Fully local.

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:

MetricDescription
TodayActions fired and time saved today.
Last 7 DaysActions fired and time saved in the last week.
All TimeTotal actions and total time saved since install.
Best Day / Best 7 DaysYour highest single-day and rolling 7-day records.
BreakdownPercentage split between Expansions, Hotkeys, and Macros with visual bars.

Pro analytics

Pro users get additional detailed analytics:

FeatureDescription
14-Day Activity ChartDaily bar chart showing actions fired per day over the last two weeks. Hover for exact numbers.
Hourly Heatmap7-day grid showing your most active hours. Gold intensity = more activity. Helps you understand your productivity patterns.
Per-Assignment BreakdownRanked 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.
StreaksCurrent consecutive-day streak and longest streak ever. A day counts if at least one action was fired.
CSV ExportDownload 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 vs telemetry

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.

Licence
Activate Pro features with a licence key.

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

1
Open Settings (cog icon in the title bar).
2
Find the Licence section at the top of the Settings panel.
3
Enter your licence key and click Activate.
4
On success, a PRO badge appears with your licence status.

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

FeatureFreePro
Hotkeys, macros, AHK, mouse, double-pressYesYes
Text expansions, dynamic tokens, fill-insYesYes
Profiles (create, manage, link)YesYes
Quick Search, radial menus, clipboard managerYesYes
Profile auto-switch on app focusNot includedYes
Hold triggerNot includedYes
Formulas ({=expr}, {if}…{endif})Not includedYes
Multiple variants per expansionFirst onlyAll
Image expansionsNot includedYes
Global variablesNot includedYes
Clipboard retentionUp to 7 daysUp to 30 days
AnalyticsBasicFull dashboard + CSV export
Troubleshooting
Common issues and how to fix them.

A hotkey is not firing

Check Keyfire is running and not paused

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.

Check the active profile

The assignment may exist in a different profile. Check which profile is active (green dot in the accordion) and confirm your assignment is there.

Check the modifier layer exactly

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.

Another app may be intercepting the key

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

Check the trigger characters exactly

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.

Try the Clipboard input method

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: …»

Check identifier names match your fill-in labels exactly

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.

Wrap strings in double quotes

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 infoRun 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.

Config recovery

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

Will Keyfire get me banned in online games?

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.