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

Setapp coming soon. Subscribe to KeyStruck directly through Setapp on a monthly, quarterly, or annual cadence, or pay once. No separate license key; Setapp delivers updates automatically. See License for the full breakdown.

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.

KeyStruck does not log keystrokes. It reads the name of the menu item the system just fired — “Save”, “New Tab” — not the keys themselves, and nothing leaves your Mac.

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:

Position and size

Preferences → HUD → Display controls where the HUD lands and how big it is:

Appearance

Preferences → HUD → Appearance:

Sound

Preferences → Sound:

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.

KeyStruck only opens the cheat sheet on a double-tap, never a single hold, so it doesn't fight with apps that already use ⌘-hold for their own behavior. Holding ⌘ during a click-drag (window snap, marquee select) doesn't trigger it either.

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:

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.

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:

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: