Ctrl+Shift+letter collapses to Ctrl+letter ; xterm modifyOtherKeys (ESC[>4;2m) is ignored
Author: cattyhouseCreated Sep 20, 2026Updated Sep 20, 2026
Environment: rioterm Version 0.5.28 (0.5.28.20260917201501), macOS (Apple Silicon), TERM=rio, tmux 3.7c.
- Symptoms
- Outside tmux,
cat -vshowsCtrl+FandCtrl+Shift+Fboth as^F. Afterprintf '\e[>4;2m', still^F^F. So xtermmodifyOtherKeysenable has no effect. - Outside tmux, apps using the Kitty keyboard protocol (e.g.
pisendingESC[>7u) work:Ctrl+Shift+Farrives asESC[102;6u. - Inside tmux,
Ctrl+Shift+Fnever reaches the inner app: withextended-keys on,extended-keys-format csi-u, andterminal-features ",rio*:extkeys", innerpane_key_modebecomesExt 2butcat -vafterESC[>4;2mstill shows^[[102;5u^[[102;5u(both as Ctrl+F). Ghostty in the same tmux setup reports^[[102;5uvs^[[102;6uand works. - Practical impact:
pitranscript search (ctrl+shift+f) works inriooutside tmux and inghostty+tmux, but not inrio+tmux.
- Possible cause
- Rio appears to implement Kitty keyboard handling (
kitty_keyboard.rs) but ignores the xtermmodifyOtherKeysenable/disable sequences (ESC[>4;1m,ESC[>4;2m,ESC[>4;0m). - tmux only ever requests extended keys from the outer terminal with xterm mode 2 (
Eneks=\E[>4;2m, see tmux 3.5 CHANGES: "always request mode 2 from parent terminal"); it never sends a Kitty push (ESC[>...u) outward. It does accept bothCSI 27 ~andCSI ufrom the outer terminal. - So tmux can never put Rio into extended mode: tmux sends
>4;2m, Rio ignores it and keeps sending legacy0x06, tmux forwards it asCtrl+F. Ghostty works only because it sendsCSI-uunsolicited. - Suggestion: support the xterm
modifyOtherKeysenable sequences in Rio (at least>4;1m/>4;2m/>4;0m), or document that Rio is Kitty-only so multiplexers like tmux cannot drive it via the xterm path.
Source: raphamorim/rio