all repos — st @ ba7f4d69af62d20e13fea78a408095e017410651

st (suckless terminal) config

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.
Avi Halachmi (:avih) avihpit@yahoo.com
commit

ba7f4d69af62d20e13fea78a408095e017410651

parent

2b8333f553c14c15398e810353e192eb05938580

3 files changed, 18 insertions(+), 9 deletions(-)

jump to
M config.def.hconfig.def.h

@@ -155,9 +155,9 @@ * Internal mouse shortcuts.

* 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. */
M st.hst.h

@@ -74,6 +74,7 @@ int i;

uint ui; float f; const void *v; + const char *s; } Arg; void die(const char *, ...);
M x.cx.c

@@ -29,9 +29,10 @@ const Arg arg;

} 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 @@ zoomabs(&larg);

} } +void +ttysend(const Arg *arg) +{ + ttywrite(arg->s, strlen(arg->s), 1); +} + int evcol(XEvent *e) {

@@ -421,9 +429,9 @@ return;

} 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; } }