Press59
Hold Caps Lock, press a letter, and the app is in front.
Press59 is a small, free menu bar app for macOS that turns Caps Lock into an app switcher. Give each app a letter: Caps Lock + C brings Chrome to the front, Caps Lock + S switches to Slack, and opens it if it isn't running. Press the same keys again and the app hides. A quick tap of Caps Lock on its own still toggles capitals.
Download for Mac · press59.win · macOS 14 Sonoma or later, Apple silicon and Intel
A small, free tool I built for myself with Claude Code. Use at your own risk, issues welcome, no promises.
Features
- One key per app. Caps Lock + a letter or number opens the app, or brings it forward if it's already running.
- Press again to hide. The same shortcut hides the app when it's already in front (optional).
- Caps Lock still works. Tap it on its own to turn capitals on or off.
- A Hyper key for everything else. Keys without an app are sent as ⌃⌥⇧⌘ + key, so you can use Caps Lock as a modifier in Raycast, Keyboard Maestro, window managers and app shortcuts.
- Nothing leaks through. Shortcuts are caught before any app sees them, so no stray letter gets typed.
- Shows your shortcuts on screen. Optional, for screen recordings, streams and demos: a badge shows what each shortcut did and the keys that did it.
- Your Month in Press59. A card of your month (app switches, top apps, streak) to post or share, with earlier months a click away. The counts stay on your Mac.
- Set shortcuts from the cheat sheet. Hold Caps Lock to see your shortcuts on a keyboard, then click a key to give it the app you're in, another open app, or any app.
- Stays out of the way. No Dock icon, no window. Lives in the menu bar and can start at login.
Getting started
- Download Press59, open the DMG and drag Press59 to Applications.
- Open Press59 and allow it in System Settings › Privacy & Security › Accessibility.
- Hold Caps Lock and press a letter. Chrome, Slack and Finder get C, S and F if they're installed. Add your own apps in Settings.
Settings are in the menu bar icon. If macOS hides the icon on a crowded menu bar, hold Caps Lock and press ,, or open Press59 again.
If you use another Hyper key tool (Raycast's Hyper Key, Hyperkey, Karabiner-Elements), turn off its Caps Lock mapping so only one app owns the key. The same goes for Caps Lock as Backspace, which many Colemak users set up: Press59 needs the key for itself.
Press59 follows your keyboard layout: on Colemak, AZERTY or Dvorak, a shortcut is the letter the key types, and the cheat sheet shows your layout. In a non-Latin layout such as Russian or Greek, shortcuts use the letters of your Latin layout, as ⌘ shortcuts do.
Privacy
Press59 has no account and no analytics. Its only network request is a daily check of press59.win for updates, which sends nothing but its version; turn it off in Settings. Installing an update counts as a download, just like one from the website (version and country, no IP address). It needs Accessibility access to see keystrokes so it can catch its shortcuts before other apps do; it doesn't record or store what you type. Your shortcuts are saved locally in its preferences, and so are the counts for Your Month in Press59 (how often each shortcut was used, by day and hour, never what you type); turn counting off or reset it in Settings.
How it works
- At launch, Press59 uses macOS's
hidutil to make the Caps Lock key send F18, a key no Mac keyboard has. It adds this to any key remaps you already have rather than replacing them.
- A keyboard event tap treats F18 as a modifier: while it's held, a letter with an app assigned opens that app and is swallowed; any other key is sent on with ⌃⌥⇧⌘ added.
- Releasing F18 without pressing another key counts as a tap, and Press59 toggles Caps Lock through IOKit.
- On quit, Press59 removes only its own mapping, so Caps Lock behaves normally again and remaps from other tools stay in place.
The decisions are in HyperKeyLogic.swift, the remapping in KeyMappings.swift, and the event tap in HyperKeyMonitor.swift. Run the tests with ⌘U in Xcode.
Building from source
You need a recent Xcode and XcodeGen (brew install xcodegen).
cp app/Config/Signing.local.xcconfig.example app/Config/Signing.local.xcconfig
Set your Apple Developer Team ID in that file, then generate and open the project:
cd app && xcodegen generate && open Press59.xcodeproj
Run the Press59 scheme. Debug builds are a separate app to macOS, “Press59 Debug.app” (win.press59.app.debug), with their own Accessibility entry and settings, so they don’t take over an installed Press59. A rebuilt app may need its Accessibility permission granted again.
The repository also holds the press59.win website and the release tooling; see MAINTAINING.md.
License
Press59 is free software under the GNU General Public License v3.0: you can use, study, change and share it, and copies or changed versions you distribute must stay under the same license.
The name "Press59" and the Press59 logo aren't covered by the license. Forks are welcome under a different name and icon.