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