Flip your Mac's function keys from the menu bar — instantly. No restart, no logout, no fuss.
Download · How it works · Build from source
macOS 13+ · Apple Silicon & Intel · Signed & notarized · GPLv3
fnSwitch lives in your menu bar as a single fn key. Click it (or press ⌘⎋ - Cmd + Esc) to switch between using F1–F12 as standard function keys or as media / hardware keys — and the change takes effect the moment you click, without the restart macOS normally forces on you.
The icon always shows the current mode at a glance:
- One-click toggle. Left-click the icon to flip modes instantly; the icon updates to match.
- Global shortcut. Press ⌘⎋ (Cmd + Esc) from anywhere — no Accessibility permission required.
- Always in sync. Change the setting in System Settings and the icon updates itself.
- Launch at Login. Optional, from the right-click menu.
- Invisible until you need it. Menu-bar only — no Dock icon, no window.
- Tiny & native. A few hundred KB of Swift + AppKit. No background scripts, no login shells.
- Applies the change live by opening a parameter connection to
IOHIDSystem(IOServiceOpen+kIOHIDParamConnectType) and setting theHIDFKeyModeparameter withIOHIDSetParameter— the same knob the driver responds to when System Settings changes it. It runs in-session, without root, on long-stable public IOKit that behaves consistently across macOS versions. - Persists the
com.apple.keyboard.fnStatepreference so the choice survives a reboot and keeps System Settings in sync, and posts thecom.apple.keyboard.fnstatedidchangenotification so everything else updates too.
Download the latest .dmg (or .zip) from the Releases page, open it, and drag fnSwitch to Applications. Builds are signed with a Developer ID and notarized by Apple, so they open without Gatekeeper warnings.
Requires macOS 13 (Ventura) or later.
xcodebuild -project fnSwitch.xcodeproj -scheme fnSwitch -configuration Release build…or open fnSwitch.xcodeproj in Xcode and hit Run. The app is a menu-bar–only agent (LSUIElement), so it has no Dock icon. Building requires Xcode 15 or later.
fnSwitch is free software licensed under the GNU General Public License v3.
Made with ❤️ in Austria 🇦🇹

