Introduction
Introduction Statistics Contact Development Disclaimer Help
st-scrollback-mouse-0.8.2.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-scrollback-mouse-0.8.2.diff (2181B)
---
1 From 315f69069017122ca69d0319d0ad9481113fe5c8 Mon Sep 17 00:00:00 2001
2 From: Jacob Prosser <[email protected]>
3 Date: Fri, 26 Apr 2019 17:23:27 +1000
4 Subject: [PATCH] Scrollback-Mouse for 0.8.2
5
6 ---
7 config.def.h | 10 ++++++++--
8 st.h | 8 ++++++++
9 x.c | 9 +++++++++
10 3 files changed, 25 insertions(+), 2 deletions(-)
11
12 diff --git a/config.def.h b/config.def.h
13 index 7326a74..ad20c4c 100644
14 --- a/config.def.h
15 +++ b/config.def.h
16 @@ -156,8 +156,14 @@ static unsigned int defaultattr = 11;
17 */
18 static MouseShortcut mshortcuts[] = {
19 /* button mask string */
20 - { Button4, XK_ANY_MOD, "\031" },
21 - { Button5, XK_ANY_MOD, "\005" },
22 + { Button4, XK_NO_MOD, "\031" },
23 + { Button5, XK_NO_MOD, "\005" },
24 +};
25 +
26 +MouseKey mkeys[] = {
27 + /* button mask function argumen…
28 + { Button4, ShiftMask, kscrollup, {.i = …
29 + { Button5, ShiftMask, kscrolldown, {.i = …
30 };
31
32 /* Internal keyboard shortcuts. */
33 diff --git a/st.h b/st.h
34 index 17a79e0..3ac7f57 100644
35 --- a/st.h
36 +++ b/st.h
37 @@ -76,6 +76,13 @@ typedef union {
38 const void *v;
39 } Arg;
40
41 +typedef struct {
42 + uint b;
43 + uint mask;
44 + void (*func)(const Arg *);
45 + const Arg arg;
46 +} MouseKey;
47 +
48 void die(const char *, ...);
49 void redraw(void);
50 void draw(void);
51 @@ -122,3 +129,4 @@ extern char *termname;
52 extern unsigned int tabspaces;
53 extern unsigned int defaultfg;
54 extern unsigned int defaultbg;
55 +extern MouseKey mkeys[];
56 diff --git a/x.c b/x.c
57 index 0422421..e9fd6e9 100644
58 --- a/x.c
59 +++ b/x.c
60 @@ -409,6 +409,7 @@ bpress(XEvent *e)
61 {
62 struct timespec now;
63 MouseShortcut *ms;
64 + MouseKey *mk;
65 int snap;
66
67 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
68 @@ -424,6 +425,14 @@ bpress(XEvent *e)
69 }
70 }
71
72 + for (mk = mkeys; mk < mkeys + LEN(mkeys); mk++) {
73 + if (e->xbutton.button == mk->b
74 + && match(mk->mask, e->xbutton.state)) {
75 + mk->func(&mk->arg);
76 + return;
77 + }
78 + }
79 +
80 if (e->xbutton.button == Button1) {
81 /*
82 * If the user clicks below predefined timeouts specific
83 --
84 2.21.0
85
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.