Summary
A Conditional Activation Group whose condition is keyboard_input_source == "简体拼音" (Apple's built-in Simplified Chinese Pinyin IME) stays inactive after the Mac wakes from sleep — and also right after BTT restarts — even though the condition is true at that moment. The triggers inside the group don't fire and the keys pass through to the app natively. Any real input source change event immediately fixes it.
Setup
- BTT: 6.655 (build 2026072301, alpha channel)
- macOS: 26.5.2 (25F84), MacBook Pro M4 Pro
- CAG condition:
keyboard_input_source == "简体拼音"(single condition) - The group contains a few key triggers (backtick, shift+comma, etc.) that paste half-width replacements for the IME's full-width punctuation. Inside the group everything works as expected.
Steps to reproduce
- Create the CAG above and put a key trigger inside it (e.g. ` → paste something).
- With the Pinyin input source active, confirm the trigger works.
- Let the Mac sleep for a while (input source unchanged, still Pinyin), then wake it.
- Type the trigger key.
Result: the key passes through natively (full-width · appears) — the CAG did not activate, although the input source is still the one required by the condition.
Expected: CAG active, trigger fires.
The same frozen-inactive state also occurs immediately after restarting BTT while the matching input source is already active.
Evidence that the condition itself resolves correctly while frozen
I ran a background sampler (every 0.5 s) logging both the OS-level input source (via TIS APIs) and BTT's own view via
tell application "BetterTouchTool" to get_string_variable "keyboard_input_source".
At the moment of failure all values agree — OS says the Pinyin IME is selected, and get_string_variable returns 简体拼音 — yet the group's triggers are not registered. So the variable resolves fine; it looks like the group's activation state is simply never (re-)evaluated after wake/restart, because no input-source-change event has arrived since.
What un-freezes it (reproduced multiple times)
- Toggling the input source away and back (via the input menu or
TISSelectInputSourcefrom a CLI) → group activates instantly. - Opening the CAG editor at that moment shows "Currently False"/stale state until such an event occurs.
Suggested fix
Re-evaluate CAG predicates that reference keyboard_input_source once on wake from sleep and once after BTT finishes launching (not only on input-source-change notifications).
Note on similar topics
This looks related to, but distinct from, earlier reports:
- CAG issues after sleep or restart — that one was about CAGs based on persistent variables (temporary variable masking the persistent value) and was fixed in 4.369. In my case the condition is the built-in
keyboard_input_source, andget_string_variableproves the value resolves correctly while the group stays inactive — so the evaluation, not the value, is what's missing. - Shortcuts don't respond after restart/wake — in my case only the triggers inside this CAG are affected; everything outside the group keeps working after wake, and a single input-source change revives the group without restarting BTT.
Happy to provide the sampler logs or test an alpha build.