Skip to content

Commit 80d00c0

Browse files
committed
Fix Ctrl-PgUp and Ctrl-PgDn combinations
1 parent b052e48 commit 80d00c0

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

src/tsm/tsm-vte.c

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2952,11 +2952,55 @@ bool tsm_vte_handle_keyboard(struct tsm_vte *vte, uint32_t keysym,
29522952
return true;
29532953
case XKB_KEY_Page_Up:
29542954
case XKB_KEY_KP_Page_Up:
2955-
vte_write(vte, "\e[5~", 4);
2955+
/* Combination with ALT are handled as TSM_VTE_FLAG_PREPEND_ESCAPE flag */
2956+
/* if (mods & TSM_ALT_MASK)
2957+
{
2958+
if ((TSM_CONTROL_MASK | TSM_SHIFT_MASK) == (mods & (TSM_CONTROL_MASK | TSM_SHIFT_MASK))) {
2959+
vte_write(vte, "\e[5;8~", 6);
2960+
} else if (mods & TSM_CONTROL_MASK) {
2961+
vte_write(vte, "\e[5;7~", 6);
2962+
} else if (mods & TSM_SHIFT_MASK) {
2963+
vte_write(vte, "\e[5;4~", 6);
2964+
} else {
2965+
vte_write(vte, "\e[5;3~", 6);
2966+
}
2967+
return true;
2968+
} */
2969+
if ((TSM_CONTROL_MASK | TSM_SHIFT_MASK) == (mods & (TSM_CONTROL_MASK | TSM_SHIFT_MASK))) {
2970+
vte_write(vte, "\e[5;6~", 6);
2971+
} else if (mods & TSM_CONTROL_MASK) {
2972+
vte_write(vte, "\e[5;5~", 6);
2973+
} else if (mods & TSM_SHIFT_MASK) {
2974+
vte_write(vte, "\e[5;2~", 6);
2975+
} else {
2976+
vte_write(vte, "\e[5~", 4);
2977+
}
29562978
return true;
29572979
case XKB_KEY_KP_Page_Down:
29582980
case XKB_KEY_Page_Down:
2959-
vte_write(vte, "\e[6~", 4);
2981+
/* Combination with ALT are handled as TSM_VTE_FLAG_PREPEND_ESCAPE flag */
2982+
/* if (mods & TSM_ALT_MASK)
2983+
{
2984+
if ((TSM_CONTROL_MASK | TSM_SHIFT_MASK) == (mods & (TSM_CONTROL_MASK | TSM_SHIFT_MASK))) {
2985+
vte_write(vte, "\e[6;8~", 6);
2986+
} else if (mods & TSM_CONTROL_MASK) {
2987+
vte_write(vte, "\e[6;7~", 6);
2988+
} else if (mods & TSM_SHIFT_MASK) {
2989+
vte_write(vte, "\e[6;4~", 6);
2990+
} else {
2991+
vte_write(vte, "\e[6;3~", 6);
2992+
}
2993+
return true;
2994+
} */
2995+
if ((TSM_CONTROL_MASK | TSM_SHIFT_MASK) == (mods & (TSM_CONTROL_MASK | TSM_SHIFT_MASK))) {
2996+
vte_write(vte, "\e[6;6~", 6);
2997+
} else if (mods & TSM_CONTROL_MASK) {
2998+
vte_write(vte, "\e[6;5~", 6);
2999+
} else if (mods & TSM_SHIFT_MASK) {
3000+
vte_write(vte, "\e[6;2~", 6);
3001+
} else {
3002+
vte_write(vte, "\e[6~", 4);
3003+
}
29603004
return true;
29613005
case XKB_KEY_Up:
29623006
case XKB_KEY_KP_Up:

0 commit comments

Comments
 (0)