§ Feature
Hotkey-driven actions and automation
One key combo, several steps run in order: type this, press that, wait a beat, run a command. Bind it once, limit it to the apps where it makes sense, and it fires every time.
Four action types, run in sequence
A binding is a list of steps, executed in order on a background queue so a slow shell command never blocks your keystrokes:
- Type text — delivered as a paste, with a short settle delay so the target app registers it before the next step runs.
- Key press — a synthetic key with any modifier combination, posted the same way a physical key would be.
- Wait — a pause in milliseconds, for sequences where the target app needs a moment between steps.
- Shell command — runs with your user permissions; a non-zero exit is logged rather than silently swallowed.
Scoped to the apps you choose
Every binding can carry a list of app bundle IDs it applies to — leave it empty and the shortcut is global, add apps and it only fires in those. The same ⌥K, for instance, can mean one thing in a terminal and nothing at all in a browser.
No collisions, anywhere in KeyMic
Hotkey bindings share one conflict registry with every other hotkey-owning feature — the voice trigger, the clipboard panel, the vault panel, key mappings, and Personas. Recording a new shortcut checks it against all of them, not just other hotkey actions, so you find out about a clash while you are still naming the binding, not the first time it silently fails to fire.
What macOS keeps for itself
A fixed set of system shortcuts — copy, paste, undo, quit, Spotlight, screenshot keys, and a few dozen more — cannot be reassigned to a binding; the recorder tells you a combo is reserved instead of letting you save over it. Standalone function keys (F1–F20) are fair game and need no modifier at all, which is useful for a dedicated action key your keyboard would otherwise waste on brightness or media controls.
Where the limits are
A binding is a fixed sequence, not a script: no conditionals, no loops, no reading a shell command’s output back into a later step. Chain enough waits and key presses and you can cover most editor/terminal workflows, but anything that needs branching logic belongs in the shell command itself, not in the sequence around it.
Permissions
Hotkey actions run through the same Accessibility-gated event tap as key remapping — see keyboard remappingfor that model. A shell-command step runs with your full user permissions, so treat a bound command the way you would anything you’d type into Terminal yourself; Security & Architecture covers the rest of the permission surface.
Also in KeyMic: voice input and dictation, or see everything on one page.