In alternate screens, with alternateScroll mode, I wonder if it'd be more 
useful to send Prior / Next (PageUp / PageDown) signals instead of Up / Down 
when scrolling with a mouse/touchpad? Many apps (like irssi) use Up/Down to 
navigate through their command lines, whereas PageUp/PageDown seems a bit more 
universally understood.

The downside is that the simulated scolling won't be smooth, it'll jump by a 
page, but that can be customized in most of these apps to jump less, or to do 
single-line scrolling.

Currently my xterm sends five Up/Down signals each time I scroll. With the 
attached patch it sends one Prior/Next signal. "Scrolling" works in all my 
terminal apps now.

By the way, how can I get these alternateScroll events to include Shift- or 
Ctrl- modifiers? Currently they're being ignored.
--- a/scrollbar.c       2023-05-01 15:19:31.000000000 -0400
+++ b/scrollbar.c       2023-05-02 11:36:24.000000000 -0400
@@ -716,20 +716,16 @@
        screen->alternateScroll && screen->whichBuf) {
        ANSI reply;
 
-       amount /= FontHeight(screen);
        memset(&reply, 0, sizeof(reply));
-       reply.a_type = ((xw->keyboard.flags & MODE_DECCKM)
-                       ? ANSI_SS3
-                       : ANSI_CSI);
+       reply.a_type = ANSI_CSI;
+       reply.a_nparam = 1;
+       reply.a_final = '~';
        if (amount > 0) {
-           reply.a_final = 'B';
+           reply.a_param[0] = (ParmType) 6;
        } else {
-           amount = -amount;
-           reply.a_final = 'A';
-       }
-       while (amount-- > 0) {
-           unparseseq(xw, &reply);
+           reply.a_param[0] = (ParmType) 5;
        }
+       unparseseq(xw, &reply);
     } else {
        ScrollTextUpDownBy(w, (XtPointer) 0, (XtPointer) amount);
     }

Reply via email to