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 defaultitalic = 11;
|
||||||
static unsigned int defaultunderline = 7;
|
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
|
#define MODKEY Mod1Mask
|
||||||
|
|
||||||
static Shortcut shortcuts[] = {
|
static Shortcut shortcuts[] = {
|
||||||
|
|
26
st.c
26
st.c
|
@ -228,6 +228,12 @@ typedef struct {
|
||||||
char state; /* focus, redraw, visible */
|
char state; /* focus, redraw, visible */
|
||||||
} XWindow;
|
} XWindow;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int b;
|
||||||
|
uint mask;
|
||||||
|
char s[ESC_BUF_SIZ];
|
||||||
|
} Mousekey;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
KeySym k;
|
KeySym k;
|
||||||
uint mask;
|
uint mask;
|
||||||
|
@ -771,10 +777,24 @@ mousereport(XEvent *e) {
|
||||||
void
|
void
|
||||||
bpress(XEvent *e) {
|
bpress(XEvent *e) {
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
Mousekey *mk;
|
||||||
|
|
||||||
if(IS_SET(MODE_MOUSE)) {
|
if(IS_SET(MODE_MOUSE)) {
|
||||||
mousereport(e);
|
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);
|
gettimeofday(&now, NULL);
|
||||||
|
|
||||||
/* Clear previous selection, logically and visually. */
|
/* Clear previous selection, logically and visually. */
|
||||||
|
@ -817,10 +837,6 @@ bpress(XEvent *e) {
|
||||||
}
|
}
|
||||||
sel.tclick2 = sel.tclick1;
|
sel.tclick2 = sel.tclick1;
|
||||||
sel.tclick1 = now;
|
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