mirror of
https://github.com/LukeSmithxyz/st.git
synced 2024-11-22 07:15:59 +01:00
Add a possibility to modify the string sent by mouse buttons.
Thanks Alexander Rezinsky <alexrez@gmail.com> for the suggestion!
This commit is contained in:
parent
a77b01176a
commit
a53017c8b4
2 changed files with 30 additions and 6 deletions
10
config.def.h
10
config.def.h
|
@ -74,7 +74,15 @@ static unsigned int defaultcs = 256;
|
|||
static unsigned int defaultitalic = 11;
|
||||
static unsigned int defaultunderline = 7;
|
||||
|
||||
/* Internal shortcuts. */
|
||||
/* Internal mouse shortcuts. */
|
||||
/* Beware that overloading Button1 will disable the selection. */
|
||||
static Mousekey mshortcuts[] = {
|
||||
/* keysym mask string */
|
||||
{ Button4, XK_ANY_MOD, "\031"},
|
||||
{ Button5, XK_ANY_MOD, "\005"},
|
||||
};
|
||||
|
||||
/* Internal keyboard shortcuts. */
|
||||
#define MODKEY Mod1Mask
|
||||
|
||||
static Shortcut shortcuts[] = {
|
||||
|
|
26
st.c
26
st.c
|
@ -228,6 +228,12 @@ typedef struct {
|
|||
char state; /* focus, redraw, visible */
|
||||
} XWindow;
|
||||
|
||||
typedef struct {
|
||||
int b;
|
||||
uint mask;
|
||||
char s[ESC_BUF_SIZ];
|
||||
} Mousekey;
|
||||
|
||||
typedef struct {
|
||||
KeySym k;
|
||||
uint mask;
|
||||
|
@ -771,10 +777,24 @@ mousereport(XEvent *e) {
|
|||
void
|
||||
bpress(XEvent *e) {
|
||||
struct timeval now;
|
||||
Mousekey *mk;
|
||||
|
||||
if(IS_SET(MODE_MOUSE)) {
|
||||
mousereport(e);
|
||||
} else if(e->xbutton.button == Button1) {
|
||||
return;
|
||||
}
|
||||
|
||||
for(mk = mshortcuts; mk < mshortcuts + LEN(mshortcuts); mk++) {
|
||||
if(e->xbutton.button == mk->b
|
||||
&& match(mk->mask, e->xbutton.state)) {
|
||||
ttywrite(mk->s, strlen(mk->s));
|
||||
if(IS_SET(MODE_ECHO))
|
||||
techo(mk->s, strlen(mk->s));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(e->xbutton.button == Button1) {
|
||||
gettimeofday(&now, NULL);
|
||||
|
||||
/* Clear previous selection, logically and visually. */
|
||||
|
@ -817,10 +837,6 @@ bpress(XEvent *e) {
|
|||
}
|
||||
sel.tclick2 = sel.tclick1;
|
||||
sel.tclick1 = now;
|
||||
} else if(e->xbutton.button == Button4) {
|
||||
ttywrite("\031", 1);
|
||||
} else if(e->xbutton.button == Button5) {
|
||||
ttywrite("\005", 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue