sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 8e4c896a95eb81bcec270b20b6aa5f5c0b1aa5ef
parent 2bc4d23b73e0f5b1ca4bfc0de4334255e34410eb
Author: Avi Halachmi (:avih) <avihpit@yahoo.com>
Date:   Thu, 24 Oct 2019 20:21:16 +0300

[st][patch][scrollback] rewrite mouse/altscreen patches

st gained improved mouse shortcut customization support, which broke
the mouse and altscreen extra patches for the scrollback patch.

These two patches were rewritten to fit with the new support in st, and
became smaller and more robust.

Diffstat:
Mst.suckless.org/patches/scrollback/index.md | 16++++++++++++----
Ast.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff | 13+++++++++++++
Ast.suckless.org/patches/scrollback/st-scrollback-mouse-altscreen-20191024-a2c479c.diff | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 88 insertions(+), 4 deletions(-)

diff --git a/st.suckless.org/patches/scrollback/index.md b/st.suckless.org/patches/scrollback/index.md @@ -19,22 +19,29 @@ using `Shift+MouseWheel`. * [st-scrollback-mouse-20170427-5a10aca.diff](st-scrollback-mouse-20170427-5a10aca.diff) * [st-scrollback-mouse-0.8.diff](st-scrollback-mouse-0.8.diff) * [st-scrollback-mouse-0.8.2.diff](st-scrollback-mouse-0.8.2.diff) +* [st-scrollback-mouse-20191024-a2c479c.diff](st-scrollback-mouse-20191024-a2c479c.diff) Apply the following patch on top of the previous two to allow scrollback using mouse wheel only when not in `MODE_ALTSCREEN`. For example the content is being scrolled instead of the scrollback buffer in `less`. Consequently the Shift -modifier for scrolling is not needed anymore. **Note: It might break mkeys -other than scrolling functions.** +modifier for scrolling is not needed anymore. **Note: patches before +`20191024-a2c479c` might break mkeys other than scrolling functions.** * [st-scrollback-mouse-altscreen-20170427-5a10aca.diff](st-scrollback-mouse-altscreen-20170427-5a10aca.diff) * [st-scrollback-mouse-altscreen-0.8.diff](st-scrollback-mouse-altscreen-0.8.diff) * [st-scrollback-mouse-altscreen-20190131-e23acb9.diff](st-scrollback-mouse-altscreen-20190131-e23acb9.diff) +* [st-scrollback-mouse-altscreen-20191024-a2c479c.diff](st-scrollback-mouse-altscreen-20191024-a2c479c.diff) Notes ----- * Patches modify config.def.h, you need to add mkeys to your own config.h -* You can not have an mshortcut for the same mkey so remove Button4 and Button5 - from mshortcuts in config.h +* With patches before `20191024-a2c479c`: you can not have a mshortcut for the + same mkey so remove Button4 and Button5 from mshortcuts in config.h +* The mouse and altscreen patches `20191024-a2c479c` (and later) are simpler and + more robust because st gained better support for customized mouse shortcuts. + As a result, the altscreen patch doesn't really need the mouse patch. However + to keep it simple the instructions stay the same: the alrscreen patch still + applies on top of the (now very minimal) mouse patch. Authors ------- @@ -49,3 +56,4 @@ Authors * Lorenzo Bracco - <devtry@riseup.net> (update base patch, use static variable for config) * Kamil Kleban - <funmaker95@gmail.com> (fix altscreen detection) +* Avi Halachmi - <avihpit@yahoo.com> (mouse + altscreen rewrite after `a2c479c`) diff --git a/st.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff b/st.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff @@ -0,0 +1,13 @@ +diff --git a/config.def.h b/config.def.h +index ec1b576..4b3bf15 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -163,6 +163,8 @@ static uint forcemousemod = ShiftMask; + */ + static MouseShortcut mshortcuts[] = { + /* mask button function argument release */ ++ { ShiftMask, Button4, kscrollup, {.i = 1} }, ++ { ShiftMask, Button5, kscrolldown, {.i = 1} }, + { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, + { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, + { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, diff --git a/st.suckless.org/patches/scrollback/st-scrollback-mouse-altscreen-20191024-a2c479c.diff b/st.suckless.org/patches/scrollback/st-scrollback-mouse-altscreen-20191024-a2c479c.diff @@ -0,0 +1,63 @@ +diff --git a/config.def.h b/config.def.h +index 4b3bf15..1986316 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -163,8 +163,8 @@ static uint forcemousemod = ShiftMask; + */ + static MouseShortcut mshortcuts[] = { + /* mask button function argument release */ +- { ShiftMask, Button4, kscrollup, {.i = 1} }, +- { ShiftMask, Button5, kscrolldown, {.i = 1} }, ++ { XK_ANY_MOD, Button4, kscrollup, {.i = 1}, 0, /* !alt */ -1 }, ++ { XK_ANY_MOD, Button5, kscrolldown, {.i = 1}, 0, /* !alt */ -1 }, + { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, + { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, + { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, +diff --git a/st.c b/st.c +index 9a4f5a4..eb5bd86 100644 +--- a/st.c ++++ b/st.c +@@ -1040,6 +1040,11 @@ tnew(int col, int row) + treset(); + } + ++int tisaltscr(void) ++{ ++ return IS_SET(MODE_ALTSCREEN); ++} ++ + void + tswapscreen(void) + { +diff --git a/st.h b/st.h +index 1332cf1..f9ad815 100644 +--- a/st.h ++++ b/st.h +@@ -89,6 +89,7 @@ void sendbreak(const Arg *); + void toggleprinter(const Arg *); + + int tattrset(int); ++int tisaltscr(void); + void tnew(int, int); + void tresize(int, int); + void tsetdirtattr(int); +diff --git a/x.c b/x.c +index 6406925..de41086 100644 +--- a/x.c ++++ b/x.c +@@ -34,6 +34,7 @@ typedef struct { + void (*func)(const Arg *); + const Arg arg; + uint release; ++ int altscrn; /* 0: don't care, -1: not alt screen, 1: alt screen */ + } MouseShortcut; + + typedef struct { +@@ -426,6 +427,7 @@ mouseaction(XEvent *e, uint release) + for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { + if (ms->release == release && + ms->button == e->xbutton.button && ++ (!ms->altscrn || (ms->altscrn == (tisaltscr() ? 1 : -1))) && + (match(ms->mod, e->xbutton.state) || /* exact or forced */ + match(ms->mod, e->xbutton.state & ~forcemousemod))) { + ms->func(&(ms->arg));