Conditions
Limit a binding or a layer to an app, a variable's value, a device, and more.
Conditions decide when a binding fires. They appear in two places: a binding’s Only when, and a layer’s Active when, which applies to every binding in the layer. Conditions in a list must all hold.
Kinds
+ condition offers the common kinds directly and the rest under Advanced. Each one can be flipped between is and is not.
| Condition | Matches |
|---|---|
| App | The frontmost app. Pick several to match any of them. |
| State | A variable has one of the chosen values |
| Trackpad | A number of fingers on the trackpad, anywhere or in one half |
| App scope | Where you are inside a paired app, such as a web app’s current page |
| Device | A keyboard or mouse, by vendor and product ID |
| Input source | The active input source |
| Keyboard | ANSI, ISO, or JIS |
| Variable | A raw Karabiner variable’s value |
| Expression | A Karabiner expression, built from parts |
Device and input source conditions imported from Karabiner can hold more than the editor shows, such as location IDs or a language. Those parts are kept and written back.
Any of
To accept one of several conditions of different kinds, add Any of…. It holds its own list, which passes when any one of its conditions holds. An Any of group can’t contain another.
Missing apps
When an app a binding opens is uninstalled, the binding shows an amber warning instead of dropping the reference.