mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-21 16:02:20 +00:00
Option-as-Meta had no effect for anyone typing with a CJK input source. The whole setting was dead for them: with Pinyin selected, macOS reports Option chords as printable text (Option+B composes the special character), so gpui routed them to the IME before the key handler ran. The IME committed the composed character and swallowed the event -- on_key_down never ran, and reshape_option_keystroke never got a say. Switching to ABC made it work again, which is why this looked intermittent. Verified on the wire: with Pinyin active Option+F/Option+B put c692 / e288ab on the PTY where ESC f / ESC b belong. The routing decision lives in gpui's macOS backend and is asked once per view, with no keystroke in hand, so it could not answer "IME for text, but not for this chord". gpui now comes from our fork, whose one commit passes the keystroke to prefers_ime_for_printable_keys; the default implementation ignores it, so no existing handler changes behavior. The terminal answers per key: an Option chord with the setting on stays on the dispatch path, everything else still prefers the IME. Gated on the setting deliberately. With Option-as-Meta off the chord is text input and the IME is the right owner -- it is what makes dead keys (Option+E then E -> e-acute) compose at all. The fork is wired in with [patch] on the source rather than by editing the gpui pins, because gpui-component declares its own gpui from the upstream URL and a pin swap would put two incompatible copies of gpui in the tree. Fetching a repo that size needs the git CLI; cargo's built-in libgit2 transfer times out partway through. Fixes #177