Macro buttons that send keystrokes straight to any window — even minimized. Each button targets the exact windows you choose, runs in the background, and fires on a global hotkey.
Download the latest Windows version from GitHub:
Minimal and compact — macro buttons on one side, quick controls on the header and footer. When you create many buttons, a second column opens automatically.
| Element | What it does |
|---|---|
| Logo (⚡) | Open menu (About · toggle Debug log) — drag the header to move the app |
| ➕ Add | Create a new macro button |
| Macro buttons | Left-click: start/stop · Right-click: options menu · Drag out: capture a window · Drag within: reorder |
| − Minimize | Minimize to system tray |
| ✕ Close | Exit the app |
| Option | What it does |
|---|---|
| ⚙️ Configure | Edit title, line delay, start hotkey, stop hotkey, and key send method |
| 📝 Edit Script | Open the script editor for this button |
| 🪟 Manage Windows | See all captured windows — start/stop/rename/remove each one individually |
| ❌ Delete Button | Permanently delete this macro button |
| State | Meaning |
|---|---|
| ○ Empty | No window captured yet |
| ● Ready | Window captured and ready to run |
| ● 2/3 win | 2 of the 3 captured windows are open |
| ▶ Run | Script is running |
| ▶ 2 run | Script running on 2 windows simultaneously |
| ○ Closed | Windows were captured but the target app is closed |
| Action | What it does |
|---|---|
| Double-click icon | Show or hide Keymatic |
| Right-click → 📌 Show/Hide | Same as double-click |
| Right-click → ❌ Exit | Close the app completely |
Click ➕ and configure:
Drag the macro button over the target window and drop it. You can capture multiple windows on the same macro — the script will run on all of them.
Tip: Hold Ctrl while dragging to capture the window and bind it to all buttons at once.
Right-click the macro → 📝 Edit Script
Left-click the macro button to start. Click again to stop. If you configured a start or stop hotkey, those work from anywhere — even when Keymatic is minimized.
Drag a button up or down within the panel to change its position. A blue line shows where it will land.
| Command | Syntax | What it does |
|---|---|---|
| KEY | KEY <key> | Sends a key to the target window. Use + for combinations: KEY ALT+L, KEY CTRL+SHIFT+F4 |
| TEXT | TEXT <text> | Types text (character by character) |
| DELAY | DELAY <ms> | Pauses for X ms |
| REPEAT | REPEAT <n> | Repeats a block n times |
| END | END | Closes a REPEAT block |
| WAIT | WAIT <ms> | Runs a periodic block in parallel |
| ENDWAIT | ENDWAIT | Closes a WAIT block |
| LOOP | LOOP | Restarts the script from the top (infinite loop) |
| START | START <button name> | Triggers another macro button by name |
| STOP | STOP <button name> | Stops another macro button by name |
| # | # comment | Comment line (full line or after a command) |
A-Z, 0-9
NUMPAD0..NUMPAD9
ADD, SUBTRACT, MULTIPLY, DIVIDE, DECIMAL
F1..F12
UP, DOWN, LEFT, RIGHT
HOME, END, PAGEUP, PAGEDOWN
INSERT, DELETE
SHIFT, CTRL, ALT, WIN
LSHIFT, RSHIFT, LCTRL, RCTRL, LALT, RALT
ENTER, TAB, SPACE, BACKSPACE, ESCAPE
CAPSLOCK, NUMLOCK, SCROLLLOCK, PRINTSCREEN, PAUSE
SLASH (/), BACKSLASH (\), MINUS (-), EQUALS (=)
LBRACKET ([), RBRACKET (]), SEMICOLON (;), QUOTE (')
COMMA (,), PERIOD (.), TILDE (`)
# Press NumPad1 every 100ms KEY NumPad1 DELAY 100 LOOP
# Sequence with pauses KEY NumPad1 DELAY 50 KEY NumPad2 DELAY 50 KEY NumPad3 DELAY 500 LOOP
# Repeat 5 times and stop (no LOOP) REPEAT 5 KEY NumPad1 DELAY 100 END
# Type and press Enter TEXT Hello! KEY Enter DELAY 1000 LOOP
# Main: NumPad1 every 50ms KEY NumPad1 DELAY 50 # Parallel: NumPad5 every 5 seconds WAIT 5000 KEY NumPad5 ENDWAIT LOOP
# Main: basic action KEY NumPad1 DELAY 100 # Action 1: every 3s WAIT 3000 KEY NumPad2 ENDWAIT # Action 2: every 10s WAIT 10000 KEY NumPad3 ENDWAIT # Action 3: every 30s WAIT 30000 KEY NumPad4 ENDWAIT LOOP
You can trigger another macro button by name from inside a script. The name must match exactly (case-insensitive) the button title.
# Button: "Farm" # After farming, automatically start the "Sell" button KEY NumPad1 DELAY 200 KEY NumPad2 DELAY 200 START Sell
Useful to stop a looping button when a condition is met, or to coordinate multiple macros.
# Button: "Boss" # Press skills, then stop the "AutoFarm" button that was running in background KEY NumPad5 DELAY 500 KEY NumPad6 DELAY 500 STOP AutoFarm
One button starts another and immediately stops itself — useful for sequencing phases without manual intervention.
# Button: "Phase1" # Do phase 1 actions, then hand off to Phase2 REPEAT 10 KEY NumPad1 DELAY 300 END START Phase2 STOP Phase1
Each macro has two independent hotkeys. Right-click → ⚙️ Configure to set them.
Both work even when Keymatic is minimized to the tray.
Right-click → 🪟 Manage Windows
| Action | Description |
|---|---|
| ▶ Start | Starts the script only for this window |
| ⏹ Stop | Stops the script only for this window |
| ✏️ Rename | Renames the displayed window |
| 🗑️ Remove | Removes the window from the macro |
| Status | Meaning |
|---|---|
| 🟢 Ready | Window is open and ready |
| 🟡 Running | Script is running for that window |
| ⚫ Closed | Window is closed |
Increase Line delay and/or add DELAY between commands.
Drag the button back to the original position. Reordering only triggers when you release the mouse inside the Keymatic panel. Releasing outside always captures the window.
GitHub: @SuportKeymatic
Support: suportlm001@gmail.com
Send an email with:
• what you were doing
• what happened (a screenshot helps)
• your Windows version
Keymatic is free and maintained by an independent developer. If it saves you time, consider buying a coffee — it helps keep the project alive.