tmouse shortcuts: allow same functions as kb shortcuts - st - [fork] customized… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit ba7f4d69af62d20e13fea78a408095e017410651 | |
parent 2b8333f553c14c15398e810353e192eb05938580 | |
Author: Avi Halachmi (:avih) <[email protected]> | |
Date: Thu, 10 Oct 2019 23:02:26 +0300 | |
mouse shortcuts: allow same functions as kb shortcuts | |
Previously mouse shortcuts supported only ttywrite. | |
This required adding an "Arg" function ttysend - which does what the | |
original mouse shortcuts did. | |
Diffstat: | |
M config.def.h | 6 +++--- | |
M st.h | 1 + | |
M x.c | 20 ++++++++++++++------ | |
3 files changed, 18 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -155,9 +155,9 @@ static unsigned int defaultattr = 11; | |
* Beware that overloading Button1 will disable the selection. | |
*/ | |
static MouseShortcut mshortcuts[] = { | |
- /* button mask string */ | |
- { Button4, XK_ANY_MOD, "\031" }, | |
- { Button5, XK_ANY_MOD, "\005" }, | |
+ /* mask button function argument */ | |
+ { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, | |
+ { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, | |
}; | |
/* Internal keyboard shortcuts. */ | |
diff --git a/st.h b/st.h | |
t@@ -74,6 +74,7 @@ typedef union { | |
uint ui; | |
float f; | |
const void *v; | |
+ const char *s; | |
} Arg; | |
void die(const char *, ...); | |
diff --git a/x.c b/x.c | |
t@@ -29,9 +29,10 @@ typedef struct { | |
} Shortcut; | |
typedef struct { | |
- uint b; | |
- uint mask; | |
- char *s; | |
+ uint mod; | |
+ uint button; | |
+ void (*func)(const Arg *); | |
+ const Arg arg; | |
} MouseShortcut; | |
typedef struct { | |
t@@ -56,6 +57,7 @@ static void selpaste(const Arg *); | |
static void zoom(const Arg *); | |
static void zoomabs(const Arg *); | |
static void zoomreset(const Arg *); | |
+static void ttysend(const Arg *); | |
/* config.h for applying patches and the configuration. */ | |
#include "config.h" | |
t@@ -312,6 +314,12 @@ zoomreset(const Arg *arg) | |
} | |
} | |
+void | |
+ttysend(const Arg *arg) | |
+{ | |
+ ttywrite(arg->s, strlen(arg->s), 1); | |
+} | |
+ | |
int | |
evcol(XEvent *e) | |
{ | |
t@@ -421,9 +429,9 @@ bpress(XEvent *e) | |
} | |
for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { | |
- if (e->xbutton.button == ms->b | |
- && match(ms->mask, e->xbutton.state)) { | |
- ttywrite(ms->s, strlen(ms->s), 1); | |
+ if (e->xbutton.button == ms->button | |
+ && match(ms->mod, e->xbutton.state)) { | |
+ ms->func(&(ms->arg)); | |
return; | |
} | |
} |