# SwitchKey remembers which input source each app needs

> SwitchKey is a small macOS app that solves one specific irritation: switching from a Chinese input method back to a Latin layout, or the other way round, every time you move between applications. It learns the input source you used in an application and switches back to it automatically when that application comes to the front, and the whole interface is three actions.

**itsuhane/SwitchKey** — Automatically activate the correct input source.

- Repository: https://github.com/itsuhane/SwitchKey
- Website: https://itsuhane.github.io/switchkey/
- Stars: 963 · Forks: 59
- Language: Swift
- License: GPL-3.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/itsuhane-switchkey

## One irritation, taken seriously

The problem statement is two sentences long and it is worth quoting because it tells you the entire scope of the project. The app is about automatically using the correct input source, and the itch is being hassled by the wrong input source when switching application, with the promise that SwitchKey can automatically activate your choice for you. That is the whole product. There is no window management, no snippet library, no statistics, nothing else, and the topics the repository carries match, with input-method, macos, macos-app, productivity and tool. The interesting design question is where the state lives. SwitchKey does not switch input sources by typing or by a global hotkey, it binds a source to an application, which means the mapping survives a reboot, works whatever the system input source cycle is set to, and does not interfere with the shortcuts an input method uses for candidate selection.

## Installing it is a drag or a cask

There are two routes and both are simple. The manual one is to download the macOS zip from the latest release, uncompress it, and drag and drop the result into your Applications folder. The second is Homebrew, and the README credits the cask to another contributor:

```bash
brew install --cask switchkey
```

A cask is the right mechanism here, because SwitchKey is a plain application bundle with no package manager involvement, and the cask takes care of the download and the placement for you. The manual route is the older one, kept for people who do not use Homebrew, and the README keeps a dynamic badge that points at the latest release asset so the link does not go stale. One thing the README does not mention is code signing or notarisation, and for a macOS application downloaded as a zip that usually means the first launch is blocked until you approve it in Gatekeeper, which is a small wrinkle the cask route does not remove but does make more predictable.

## Three actions and no more

The usage section lists the whole interface, and it is short enough to quote. To save the current input source choice for the frontmost application you click Add Current. To enable or disable the automatic switch for a saved application you check or uncheck the checkbox on the right of the entry. To remove a saved choice you select the one to be deleted and press the delete key. There is no preferences pane, no per-application configuration beyond the checkbox, and no list of input methods to curate, because it captures whatever you are already using rather than asking you to describe a rule. That design has an obvious consequence, which is that the first time you use an application you have to add it by hand, and the value of the tool grows with the number of applications you have added.

## The accessibility permission, and why the app quits

The first run behaviour is unusual enough that the README documents it in its own section with screenshots. Upon first launch, SwitchKey will ask for accessibility permission, then it will open the accessibility page and exit. After you grant the permission you launch it again, and the same thing happens if you reject the permission later. The reason for the exit is implicit in what the app does, since detecting that the frontmost application has changed and switching the system input source on your behalf is exactly the kind of behaviour macOS gates behind the accessibility permission. The exit is there so that the grant takes effect, because the process that requested it would otherwise keep running without the permission it just asked for. The rule for a new user is simple, grant it, and start the app a second time.

## Why it was written at all

There is a section headed Purchase, and it is the most personal part of the documentation. The author explains that they wrote this because they tried some other tools, and that those tools are either buggy or too cumbersome to configure, and that they paid money and time for them, so you do not have to pay for them anymore. That is worth reading as a design brief. The two complaints map exactly onto the two features of the app. Not too cumbersome to configure is why there is no preferences screen, since every alternative that asked you to maintain a list of input methods was already a chore. And not buggy is why the implementation is a small Swift application with a handful of buttons, because a small surface is a surface that can be correct. The app is free and the licence is GPL-3.0, which is consistent with a tool the author wrote to avoid paying for someone else's.

## Where the project stands

The repository is a plain Xcode project, with a SwitchKey.xcodeproj directory, the SwitchKey/ directory holding the sources, the README and a README.assets folder with the screenshots, and the licence file. The release history is the notable part. The listed versions are 1.1.3 from 2021-01-09, 1.1.2 from 2020-03-16 and 1.1.1 from 2019-05-11, so the last published build is more than five years old, while the last push to the repository was on 2026-07-31, which means the source is being worked on without a new tagged release. The project is not archived, and the homepage is itsuhane.github.io/switchkey. For a user, the practical advice is to install the current build from the releases page or the cask and accept that the project is effectively in maintenance, and for anyone considering adopting the pattern in their own tooling, the accessibility permission approach and the three action interface are the two ideas worth taking away.

## Conclusion

SwitchKey fits a macOS user who switches between an East Asian input method and a Latin layout several times an hour, since the mapping is per application and automatic, which removes the keystroke rather than shortening it. It does not fit a user on Windows or Linux, since it is a macOS app built in Swift, and it does not fit a team that needs a maintained, signed release, because the newest tagged version is 1.1.3 from January 2021 even though the repository was pushed to in July 2026. Before you install it, read the first run section, because the app exits the moment it opens the accessibility permission page, and if you install the zip by hand rather than through the cask, expect to approve it in Gatekeeper since the README documents no signing step.

## FAQ

### What does SwitchKey do?

It is a macOS app that automatically activates the input source you chose for an application when you switch back to that application, so you stop losing time to the wrong input method after every application change.

### How do I install SwitchKey?

Download the macOS zip from the latest release, uncompress it and drag the application into your Applications folder, or install the Homebrew cask with brew install --cask switchkey, which is the route the README credits to another contributor.

### How do I set up SwitchKey for an application?

Three actions. Click Add Current to save the input source currently in use for the frontmost application, tick the checkbox on the right of the entry to enable automatic switching for it, and select an entry and press the delete key to remove a saved choice.

### Why does SwitchKey quit on first launch?

Because it asks for accessibility permission, which is what macOS requires for an app that observes the frontmost application and changes the system input source. It opens the accessibility page and exits so the grant takes effect, and you launch it again afterwards.

### Is SwitchKey still updated?

The repository is not archived and the last push was on 2026-07-31, but the newest published version is 1.1.3 from 2021-01-09, after 1.1.2 in March 2020 and 1.1.1 in May 2019. The licence is GPL-3.0.

## Sources

- [itsuhane/SwitchKey on GitHub](https://github.com/itsuhane/SwitchKey)
- [License: GPL-3.0](https://github.com/itsuhane/SwitchKey/blob/master/LICENSE)
- [Project website](https://itsuhane.github.io/switchkey/)
- [README](https://github.com/itsuhane/SwitchKey/blob/master/README.md)
- [Releases](https://github.com/itsuhane/SwitchKey/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/itsuhane-switchkey
