Command Input is a lightweight macOS menu bar app that switches Japanese input modes with single taps of the Command keys:
- Left Command (tap alone) → Eisu (英数 / Alphanumeric)
- Right Command (tap alone) → Kana (かな / Japanese)
Standard keyboard shortcuts such as Command-C or Command-Space pass through
unchanged.
- Platform: macOS 14.0 Sonoma or later
- Architecture: Apple silicon and Intel (Universal release builds)
- Build (source only): Swift 6 and Xcode Command Line Tools
Command Input is available via a Homebrew tap. Homebrew 7 requires trusting the cask before installation:
brew trust --cask gajeroll/tap/command-input
brew install --cask gajeroll/tap/command-inputIf you previously installed Command Input manually, delete /Applications/Command Input.app before running the cask install. Homebrew will refuse to overwrite an existing application.
On first launch from /Applications, the app enables Launch at Login automatically.
Download the latest CommandInput-<version>.zip from
Releases, unzip it, and
drag Command Input.app to /Applications.
git clone https://github.com/gajeroll/command-input.git
cd command-input
make # Build build/Command Input.app (host architecture)
make run # Run from the build directory
make install # Copy to /ApplicationsCommand Input runs as a menu bar accessory and does not appear in the Dock.
There is no in-app updater. If installed via Homebrew:
brew upgrade --caskIf installed manually, replace /Applications/Command Input.app with the newer release.
Turn the in-app Launch at Login toggle off before uninstalling if you do not want a leftover Login Items record.
- Homebrew:
brew uninstall --cask --zap command-input
--zapremoves the application and its preferences plist. macOS Login Items (BTM) registrations and Accessibility (TCC) grants are not cleared by Homebrew. - Source / manual:
You can also quit the app and move
make uninstall # Remove /Applications/Command Input.app/Applications/Command Input.appto the Trash.
Command Input requires Accessibility permission to observe modifier keys and post input-switching events.
- Granting permission: Enable the app under System Settings > Privacy & Security > Accessibility when prompted.
- Input Monitoring is not required. The app uses a session-level
CGEventTapand does not need the broader Input Monitoring permission. - What the tap does: The tap is created with
listenOnly, so it cannot modify or suppress events. It observeskeyDown,keyUp, andflagsChangedevents so shortcuts such as Command-A or held keys cancel a pending switch. Keystrokes are never stored or sent anywhere. - Privacy manifest:
PrivacyInfo.xcprivacyis bundled into the app (no tracking, no collected data, and UserDefaults reason CA92.1).
See SECURITY.md for the full policy and a verification command.
Command Input manages startup through macOS SMAppService and an internal
preference. The stored preference is the source of truth, so a registration
that macOS silently drops is restored instead of being treated as an opt-out.
- Installed app (
/Applicationsor~/Applications): enabled automatically on first launch. - Development builds (
build/): automatic registration is off so a temporary path is not recorded. The menu toggle still works.
- Approval required: If macOS asks for approval, choose Open Login Items Settings in the app menu and enable Command Input once.
- Repair: If macOS loses the registration, the app retries a few times and then shows Repair Launch at Login in the menu.
- Disabling: Use the in-app toggle. Removing the item in System Settings only clears the system record, so the app restores it from the stored preference.
- Keys are not switching: Open System Settings > Privacy & Security > Accessibility and confirm Command Input is enabled. After an update or identity change, turn the checkbox off and on again.
- Menu shows "Repair Launch at Login": Click the item to re-register with macOS.
- Menu shows "Approve Command Input in Login Items": Open Login Items in System Settings and enable the app.
Contributions are welcome. See CONTRIBUTING.md for local setup, code signing, architecture notes, and the release workflow.
make # Build local host binary
make test # Run test suite via Swift Testing
make run # Build and run locally
make clean # Remove build artifactsFor event-tap guarantees and vulnerability reporting, see SECURITY.md.
- DMG packaging
- Automatic updates
Inspired by iMasanari/cmd-eikana and dominion525/cmd-eikana.
Distributed under the MIT License.
