You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
🐛bug: builtin pager ignores Shift keys in Ghostty #1363
When using Sapling's internal pager (pager=internal:streampager, the default for sl log), any key that requires Shift does not work when running outside of tmux in Ghostty.app (and cmux.app which uses libghostty).
Observed failures:
G (Shift+g) to go to bottom of pager does nothing
Typing @ (Shift+2 on US layout) in search prompt (/) results in empty input
Searching for any capital letter (e.g. Foo) does not insert the capital
All shifted punctuation / symbols affected
Inside tmux it works (tmux re-encodes keys as plain chars), and inside Terminal.app it works. Only Ghostty (and libghostty-based terms) outside tmux reproduces.
Repro steps (Ghostty, no tmux)
cd ~/code/github.com/facebook/sapling && sl log -l 5000 --pager=always
Press lowercase g -> goes to top (works)
Press uppercase G (Shift+g) -> should go to bottom, stays at top
Press / to search
Type @ (Shift+2) -> prompt stays empty, should show @
Type ABC -> nothing inserted or only lowercase
Repro with hex injection (works inside tmux too, to avoid needing Ghostty)
Ghostty with modifyOtherKeys=2 enabled (which Sapling enables via termwiz ESC[>4;2m in set_raw_mode) encodes shifted keys as xterm modifyOtherKeys:
Sapling's pager enables xterm modifyOtherKeys and Ghostty sends Shift+G as ESC[27;2;71~ which termwiz decodes as Char('G')+SHIFT. The pager's keymap expects Char('G')+NONE and prompt only accepts NONE, so the exact modifier check fails. tmux hides this by re-encoding to plain G.
Activity
[-]eden/scm internal pager (streampager) ignores Shift keys in Ghostty[/-]streampager: fix Shift keys (G, @, capitals) broken in Ghostty
fix(streampager): fix Shift keys (G, @, capitals) broken in Ghostty
fix(streampager): fix Shift keys broken in Ghostty
streampager: fix Shift keys (G, @, capitals) broken in Ghostty
streampager: fix Shift keys (G, @, capitals) broken in Ghostty
streampager + curses_compat: fix Shift keys (G, @, capitals, A) broke…
streampager + curses_compat: fix Shift keys (G, @, capitals, A) broke…
streampager + curses_compat: fix Shift keys (G, @, capitals, A) broke…