xfce4-terminal: Let scroll accels fall through unless modifier is held #3487
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Update with
sudo bee update xfce4-terminal-1.1.5-2.AI disclaimer: Drafted and assisted by claude-opus-5.5 (Claude Code).
With a keyboard layout using ISO_Level5_Shift, like Neo layer 4, GTK matches
<Shift>Upfor Level5 + e (Up) and<Shift>Page_Upfor Level5 + q (Prior), as Shift is part of the key type of the letter keys and is considered consumed. xfce4-terminal scrolls instead of passing the key to VTE, which breaks shell history and paging in vim (upstream issue).The patch checks in the scroll action callbacks that the modifiers of the configured accelerator are actually held, and lets the key fall through to VTE otherwise. Looking up the configured accelerator instead of testing
GDK_SHIFT_MASKkeeps user-defined bindings without Shift, like<Primary>Up, working. It is written for upstream master (1.2.0-96-g13c9b7f1) and applies to 1.1.5 with offsets.Testing
Under Xvfb with
de(neo), xfce4-terminal runningstty raw -echo; cat -v, and the key sequencethe pty receives
so Level5 + e/q reach VTE again, while real Shift+Up/Page_Up still scroll.
Tested by Paul Menzel (@pmenzel) on sigusr2. Neo2 layer 4 works again.