Introduction
Introduction Statistics Contact Development Disclaimer Help
st-scrollback-mouse-20170427-5a10aca.diff - sites - public wiki contents of suc…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-scrollback-mouse-20170427-5a10aca.diff (2287B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 3e9cda5..a9c65a9 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -156,8 +156,14 @@ unsigned int defaultattr = 11;
6 */
7 MouseShortcut mshortcuts[] = {
8 /* button mask string */
9 - { Button4, XK_ANY_MOD, "\031" },
10 - { Button5, XK_ANY_MOD, "\005" },
11 + { Button4, XK_NO_MOD, "\031" },
12 + { Button5, XK_NO_MOD, "\005" },
13 +};
14 +
15 +MouseKey mkeys[] = {
16 + /* button mask function argumen…
17 + { Button4, ShiftMask, kscrollup, {.i = …
18 + { Button5, ShiftMask, kscrolldown, {.i = …
19 };
20
21 /* Internal keyboard shortcuts. */
22 diff --git a/st.c b/st.c
23 index b74b9dc..d33eb5b 100644
24 --- a/st.c
25 +++ b/st.c
26 @@ -237,6 +237,7 @@ static Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0…
27 /* config.h array lengths */
28 size_t colornamelen = LEN(colorname);
29 size_t mshortcutslen = LEN(mshortcuts);
30 +size_t mkeyslen = LEN(mkeys);
31 size_t shortcutslen = LEN(shortcuts);
32 size_t selmaskslen = LEN(selmasks);
33
34 diff --git a/st.h b/st.h
35 index 2d9b028..ca90c31 100644
36 --- a/st.h
37 +++ b/st.h
38 @@ -182,6 +182,13 @@ typedef union {
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 +typedef struct {
49 uint mod;
50 KeySym keysym;
51 void (*func)(const Arg *);
52 @@ -271,6 +278,8 @@ extern unsigned int mousebg;
53 extern unsigned int defaultattr;
54 extern MouseShortcut mshortcuts[];
55 extern size_t mshortcutslen;
56 +extern MouseKey mkeys[];
57 +extern size_t mkeyslen;
58 extern Shortcut shortcuts[];
59 extern size_t shortcutslen;
60 extern uint forceselmod;
61 diff --git a/x.c b/x.c
62 index 495cd90..67dcfdc 100644
63 --- a/x.c
64 +++ b/x.c
65 @@ -248,6 +248,7 @@ bpress(XEvent *e)
66 {
67 struct timespec now;
68 MouseShortcut *ms;
69 + MouseKey *mk;
70
71 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
72 mousereport(e);
73 @@ -262,6 +263,14 @@ bpress(XEvent *e)
74 }
75 }
76
77 + for (mk = mkeys; mk < mkeys + mkeyslen; mk++) {
78 + if (e->xbutton.button == mk->b
79 + && match(mk->mask, e->xbutton.state)) {
80 + mk->func(&mk->arg);
81 + return;
82 + }
83 + }
84 +
85 if (e->xbutton.button == Button1) {
86 clock_gettime(CLOCK_MONOTONIC, &now);
87
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.