A macOS menu bar utility that automatically corrects keyboard layout mistakes. Type in the wrong layout (e.g., English instead of Ukrainian/Russian) and SwitchFix detects it, deletes the mistyped word, switches the layout, and retypes the correct text — like PuntoSwitcher, but native, lightweight, and modern.
🎬 Watch the 20-second video demo with sound and narration on the website.
- Automatic correction — detects wrong-layout words on space/enter; when a later word confirms the mistake, it can also correct preceding words in the same typing run.
- Personal exceptions — protect names, abbreviations, and other words from automatic correction in Settings. Explicit hotkey and layout-switch corrections still work.
- Hotkey mode — correct only when you press Ctrl+Shift+Space (configurable).
- Selection correction — select text and press the hotkey to convert it.
- Permissions indicator — shows the status of required macOS permissions in the app menu.
- Undo —
Cmd+Zwithin 5 seconds reverts the last correction. - Revert hotkey —
CapsLockreverts the last correction (configurable). - Three languages — English (US/ABC/British/Dvorak/Colemak), Ukrainian, and Russian, with native macOS language metadata used to discover installed layouts.
- Safer layout pairing — English converts to your most recently used Cyrillic layout; Ukrainian and Russian text are never converted into each other.
- Smart filtering — skips password fields, URLs, emails, camelCase, mixed scripts.
- App blacklist — disabled in terminals, IDEs, and code editors by default (toggle per app).
- Launch at Login — optional auto-start.
- macOS 13.0 or later
SwitchFix is free to install and use; no payment to Apple is required. Public releases are ad-hoc signed, not notarized by Apple. This keeps distribution independent of a paid Apple Developer Program membership, but macOS can block the first launch until you explicitly approve the app. The installer does not disable Gatekeeper or automatically bypass this approval.
Open Terminal and run this command as your signed-in user, without sudo:
/bin/bash -o pipefail -c 'curl --fail --location --silent --show-error https://raw.githubusercontent.com/rundax/SwitchFix/master/install.sh | /bin/bash'The installer downloads the native release for your Mac, checks its archive, architecture, macOS compatibility, and code seal, installs it to /Applications/SwitchFix.app, then attempts to open it. These checks verify the bundle's format and integrity; they are not Apple notarization or a guarantee that the app is safe. Only install it if you trust this project and its download source.
Prefer a manual download? Open the latest GitHub release, download SwitchFix-arm64.app.zip for Apple Silicon or SwitchFix-intel.app.zip for Intel, extract it, and move SwitchFix.app to /Applications. Open it and continue below. Version 0.0.10 and later use ZIP downloads, not DMG installers.
If you see “SwitchFix” Not Opened and “Apple could not verify “SwitchFix” is free of malware…”, the app has been installed but Gatekeeper has blocked it because this build is not notarized. That message alone is not a malware detection; it also does not establish that the app is safe.
Only proceed for the app you intentionally downloaded from this repository and trust:
- Click Done in the warning, not Move to Bin.
- Open System Settings → Privacy & Security.
- Scroll down to the Security section. Find the message that SwitchFix was blocked and click Open Anyway.
- Authenticate with Touch ID or your Mac password if requested, then click Open in the confirmation. The exact order of prompts can vary by macOS version.
- If SwitchFix does not launch automatically, open Finder → Applications → SwitchFix again. It runs in the menu bar, so look for the Ab icon rather than a Dock icon.
No Open Anyway button? Try opening /Applications/SwitchFix.app again, click Done, and return to Privacy & Security. Apple makes this option available for about an hour after a blocked launch. If this is a managed work or school Mac, your organization's policy may prevent approval; contact its administrator rather than bypassing the policy.
Clicked Move to Bin? Run the installer again (or restore the trusted app to Applications), then repeat the steps above.
Do not disable Gatekeeper system-wide or remove quarantine attributes as a routine installation step. These instructions are for the unverified-developer warning, not a warning that macOS has detected malware. See Apple’s guidance for opening apps safely.
Gatekeeper approval lets the app launch; it does not grant permission to monitor or correct typing.
- In SwitchFix's setup window, use Open Settings + Show App for Accessibility. Enable the installed
SwitchFix.appin System Settings → Privacy & Security → Accessibility; use + to add it from Applications if needed. - If Keyboard input access is Unavailable, use the setup window's Input Monitoring button and enable or add SwitchFix in Privacy & Security → Input Monitoring. Restart SwitchFix if macOS requests it.
- Return to SwitchFix and wait for the live access check, or click Check Again.
- If prompted, add at least two supported keyboard layouts in System Settings → Keyboard → Text Input → Edit.
- Once the window shows Setup complete, use Try a correction to verify that correction works.
macOS can provide keyboard-listening access through Accessibility without listing SwitchFix under Input Monitoring. Keyboard input access — Available means listening is allowed; it does not claim that a separate Input Monitoring toggle is enabled. You do not need to add an Input Monitoring entry just to make that pane match a screenshot. Setup completion reflects current access, keyboard-monitor health, and mode prerequisites; temporary pauses in excluded apps or password fields do not undo it.
Launch at Login is optional and can be enabled in SwitchFix's Settings.
Run the same installer command to update. It preserves the previous app if replacement fails, but after a successful replacement it attempts to clear stale SwitchFix permission registrations. Because ad-hoc signatures do not provide a stable publisher identity, expect to grant permissions again after an update; macOS may also require another Open Anyway approval.
If a permission is checked but SwitchFix still reports Not allowed or Unavailable:
- Use Open Settings + Show App to open the affected permission pane and reveal the current app in Finder.
- Select the old SwitchFix entry, click −, then click + and add
/Applications/SwitchFix.appagain. Enable its toggle. - Repeat in any other affected pane, restart SwitchFix if requested, then return to Check Again.
Visual setup guide: Follow the Interactive Setup Guide for permission walkthroughs and practice simulators. First complete the Gatekeeper approval above if macOS will not open the app. Website: Explore the SwitchFix landing page and its live typo simulator.
SwitchFix lives in your menu bar with an Ab icon. The menu provides:
- Enable/Disable toggle
- Correction Mode — Automatic or Hotkey Only
- Permissions Status — visually indicates if required permissions are granted
- Installed Layouts — shows all detected system layouts
- Launch at Login — toggle automatic startup
SwitchFix stores hotkeys in UserDefaults. Customize via Terminal:
# Revert hotkey: CapsLock (no modifiers)
defaults write com.switchfix.app SwitchFix_revertHotkeyKeyCode -int 57
defaults write com.switchfix.app SwitchFix_revertHotkeyModifiers -int 0
# Correction hotkey: Ctrl+Shift+Space
defaults write com.switchfix.app SwitchFix_hotkeyKeyCode -int 49
defaults write com.switchfix.app SwitchFix_hotkeyModifiers -int $((262144+131072))- KeyboardMonitor securely captures keystrokes without blocking them.
- Characters accumulate in a short-lived LayoutDetector word buffer.
- On a word boundary (space, enter, tab), the buffer is checked against alternative layout dictionaries (e.g. checking if an English typo forms a valid Ukrainian word).
- If a valid word is found in another layout, TextCorrector safely deletes the mistyped characters, switches your input layout, and retypes the correct word.
SwitchFix logs key decisions, keyboard monitoring events, dictionary lookups, layout switching, and corrections to macOS Unified Logging under the subsystem com.switchfix.
To stream logs in real time from Terminal:
log stream --level debug --style compact --predicate 'subsystem == "com.switchfix"'-
Default verbosity (notices & errors only):
log stream --style compact --predicate 'subsystem == "com.switchfix"' -
Alternative filter (process & message prefix):
log stream --style compact --predicate '(process == "SwitchFixApp" OR process == "SwitchFix") AND eventMessage CONTAINS "[SwitchFix]"' -
View recent past logs (e.g., past 5 minutes):
log show --last 5m --style compact --predicate 'subsystem == "com.switchfix"' -
Console.app: Open Console.app and filter search by
subsystem:com.switchfixor[SwitchFix].
Note for zsh users: If your terminal returns
zsh:log:1: too many arguments(becauselogis shadowed by zsh's shell builtin), invoke/usr/bin/logdirectly:/usr/bin/log stream --level debug --style compact --predicate 'subsystem == "com.switchfix"'
MIT
