Show keystrokes on screen. A modern KeyCastr alternative as a Raycast extension.
Great for screen recordings, live demos, presentations, and bug reports.

KeyRaycast uses a macOS CGEventTap to capture keystrokes. This requires Accessibility permission. The first time you run it, macOS will prompt you to grant access. If the overlay doesn't appear, check System Settings > Privacy & Security > Accessibility and make sure Raycast (or the KeyraycastHelper) is enabled.
Change settings in Raycast preferences. Toggle the overlay off then on to apply changes.
| Setting | Options | Default |
|---|---|---|
| Display Mode | All Keys, All Modified Keys, Command Keys Only | All Keys |
| Display Duration | 0.5s, 1.0s, 1.5s, 2.0s, 3.0s, 5.0s | 2.0s |
| Appearance | Auto, Glass (macOS 26+), Dark, Light | Auto |
| Font Size | Extra Small, Small, Medium, Large, Extra Large | Medium |
| Position | Bottom/Top + Center/Left/Right | Bottom Center |
| Force Uppercase | On/Off | Off |
| Show Space Symbol | On/Off | On |
| Show Mouse Clicks | On/Off | Off |
Toggle command in Raycast | Typed text with light theme |
Liquid Glass on macOS 26 | Shortcuts with dark theme |
The Raycast extension launches a native Swift helper binary that runs independently in the background. The helper captures keystrokes via CGEventTap and displays them in a floating overlay window. Toggling off sends SIGTERM to the helper process.
The overlay runs in a separate long-lived Swift process (KeyraycastHelper) with its own NSApplication loop, so swift/keyraycast-helper/ is a plain SPM executable. The directory layout (swift/<target>/) follows extensions like color-picker, but we don't link extensions-swift-tools/@raycast macros — they're meant for short-lived Swift functions called via swift: imports, which would add a heavy swift-syntax build for no benefit here.
KeyraycastHelper is not committed to git. Build it with:
npm run build-helper — fast, host arch only (good for npm run dev, runs automatically before it).npm run build-helper-universal — universal arm64 + x86_64, used by npm run build for distribution.