Introduction
Introduction Statistics Contact Development Disclaimer Help
mouse shortcuts: allow same functions as kb shortcuts - st - my customized vers…
git clone git://git.codemadness.org/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
@@ -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
@@ -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
@@ -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 {
@@ -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"
@@ -312,6 +314,12 @@ zoomreset(const Arg *arg)
}
}
+void
+ttysend(const Arg *arg)
+{
+ ttywrite(arg->s, strlen(arg->s), 1);
+}
+
int
evcol(XEvent *e)
{
@@ -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;
}
}
You are viewing proxied material from codemadness.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.