KeyStruck documentation
A floating glass HUD that names every keyboard shortcut you fire — and on demand, lists every shortcut the active app has bound. This page walks through every feature: install, grant access, fire a shortcut, summon the cheat sheet.
Installation
KeyStruck comes two ways. The download from bendansby.com/apps/keystruck is a standard .dmg — open it and drag KeyStruck.app to your Applications folder. The Mac App Store version installs and updates the usual way.
Requires macOS 13 Ventura or later, on Apple Silicon or Intel. The direct-download build checks for updates on its own; you can also check anytime via Preferences → General → Check for Updates….
Accessibility access
KeyStruck reads menu titles from the frontmost app to identify the action you triggered. macOS gates that behind the Accessibility permission, so the first launch prompts you to grant it. If you skip the prompt, KeyStruck stays running but the HUD won't fire — open Preferences → General → Permissions and click Open System Settings… to grant it later, then Re-check to confirm.
How it works
KeyStruck observes accessibility notifications from the frontmost app. When you press a key combination that the app has bound to a menu item, macOS fires that menu item and KeyStruck sees the action name. The HUD pops up named, and disappears again.
Because the source is the menu bar, KeyStruck names whatever the app exposes there — including command names you've forgotten and ones you didn't know existed.
The shortcut HUD
The HUD is a small glass panel that briefly shows the name of the action you just fired (for example, Save). Optionally it can prefix the action with the keys you pressed — ⌘S Save.
Toggle in Preferences → General:
- Enable KeyStruck. Master switch. Off, the HUD never appears.
- Show keyboard shortcut. Prefix the action with the modifiers and key (e.g.
⌘S Save).
Position and size
Preferences → HUD → Display controls where the HUD lands and how big it is:
- Position. Center, top center, bottom center, top/bottom left, top/bottom right.
- Duration. How long the HUD stays on screen before fading.
- Font size. Scale the whole panel up or down.
- Test in chosen position. Fires a sample HUD so you can preview without waiting to trigger a real shortcut.
Appearance
Preferences → HUD → Appearance:
- Mode. Auto, Light, or Dark. Auto follows the system Light/Dark setting.
- Translucent glass. Render the HUD with a frosted-glass background and a soft top sheen. Turn off for a flat panel.
- Background opacity. Tune how see-through the background is.
- Pop animation. Spring-scale the HUD in when it appears. Honors System Settings → Accessibility → Display → Reduce Motion automatically — when Reduce Motion is on, the pop is skipped regardless of this setting.
Sound
Preferences → Sound:
- Play sound on activation. Off by default. Picks from Pop, Tink, Glass, Ping, Morse, or Purr.
The cheat sheet — double-tap ⌘
The HUD names shortcuts as you fire them. The cheat sheet shows shortcuts you haven't fired — every keyboard shortcut bound by the frontmost app.
To summon it: double-tap ⌘ and hold the second press for about half a second. A panel slides in listing every shortcut in the active app, grouped by menu. Release ⌘ to dismiss.
Enable or disable in Preferences → General → Cheat sheet → Show shortcuts when modifiers are held.
Filtering by modifier
While the cheat sheet is open, add ⇧, ⌥, or ⌃ on top of the held ⌘ to filter the list to that combination. Drop the extra modifier to widen the list again. The header counts how many shortcuts match.
Click any row to fire that shortcut — the cheat sheet dismisses and the app receives the command.
Exclude apps
Some apps already have great visual feedback for shortcuts, or you just don't want a HUD popping over your editor or password manager. Open Preferences → Exclusions → Add App… and pick the app(s). KeyStruck stays silent whenever that app is frontmost.
The list takes any number of apps. Hit the minus button next to a row to remove it. Excluded apps are matched by bundle identifier, so renaming or moving the app on disk doesn't break the rule.
Exclude shortcuts
Preferences → Exclusions → Add Shortcut creates an exclusion rule with four modifier chips (⌃ ⌥ ⇧ ⌘) and a single-character key field. Toggle the chips you want and type the key — V, F1, Esc, even Space (which displays as ␣, matching the glyph KeyStruck reads from menus).
No modifier is required. A bare-key rule like just Esc is legal and will suppress the HUD for menu items bound to that key alone.
Each rule has a scope, set from the menu on the right side of the row:
- Everywhere. The default. The rule fires regardless of frontmost app.
- One app. Pick an app via Choose App… — the rule only suppresses the HUD when that app is frontmost. Lets you, say, hide ⌘V in your editor while still seeing it everywhere else.
Menu bar and login
KeyStruck runs as a menu-bar app. The status item shows a key glyph; click it for a quick toggle, the Preferences window, Check for Updates, and Quit.
- Show in menu bar. Hide the status item if you'd rather KeyStruck stay invisible. To reopen Preferences afterwards, relaunch KeyStruck from Finder or Spotlight.
- Start at login. Launch KeyStruck automatically when you log in, via macOS's modern SMAppService registration.
Reset to defaults
Preferences → General → Reset to Defaults… restores position, font size, sound, glass settings, and the menu-bar option. Your Accessibility permission is unaffected.
What KeyStruck can't see
KeyStruck observes accessibility notifications for menu activations. A few shortcut types fall outside that scope:
- Carbon hotkeys. Older global hotkeys registered via the Carbon API don't fire menu-item notifications, so KeyStruck can't name them.
- Shortcuts not bound to a menu item. If an app handles a key combination internally without going through its menu, there's no menu activation to observe.
- System-handled shortcuts. ⇧⌘5, ⌘Space, and friends are handled by macOS before any app sees them; KeyStruck suppresses the cheat sheet for these intentionally.
If a shortcut you'd expect to see isn't naming itself, that's usually why.
Languages
KeyStruck is localized into English, Deutsch, Español, Français, Italiano, 日本語, 한국어, Português (Brasil), Українська, Русский, and 简体中文. It picks the right language automatically based on your System Settings → General → Language & Region preferences.
To pin KeyStruck to a specific language without changing system preferences, open System Settings → General → Language & Region → Applications, click the + button, and pick KeyStruck.
License
KeyStruck ships through three channels — pick whichever fits how you like to pay for software:
- Direct download. Buy a one-time license via Preferences → License → Buy License…, then activate via Enter License…. Activation needs the internet briefly, then works offline; KeyStruck revalidates quietly in the background so refunded or revoked keys stop working.
- Mac App Store. Paid through Apple's standard pipeline — buy it once, no separate license key.
- Setapp (coming soon). Subscribe to KeyStruck directly through Setapp — pick a cadence (monthly, quarterly, or annual) or pay once. No separate license key; Setapp delivers updates automatically.