diff --git a/input-keys.c b/input-keys.c index eb5dae88..fdce5409 100644 --- a/input-keys.c +++ b/input-keys.c @@ -673,8 +673,7 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) } /* Ignore internal function key codes. */ - if ((key >= KEYC_BASE && key < KEYC_BASE_END) || - (key >= KEYC_USER && key < KEYC_USER_END)) { + if (KEYC_IS_USER(key) || KEYC_IS_SPECIAL(key) || KEYC_IS_MOUSE(key)) { log_debug("%s: ignoring key 0x%llx", __func__, key); return (0); } diff --git a/key-string.c b/key-string.c index 8b9b5604..3df9da4b 100644 --- a/key-string.c +++ b/key-string.c @@ -202,7 +202,7 @@ key_string_search_table(const char *string) return (key_string_table[i].key); } - if (sscanf(string, "User%u", &user) == 1 && user < KEYC_NUSER) + if (sscanf(string, "User%u", &user) == 1 && user <= KEYC_NUSER) return (KEYC_USER + user); return (KEYC_UNKNOWN); @@ -418,7 +418,7 @@ key_string_lookup_key(key_code key, int with_flags) s = "MouseMoveBorder"; goto append; } - if (key >= KEYC_USER && key < KEYC_USER_END) { + if (KEYC_IS_USER(key)) { snprintf(tmp, sizeof tmp, "User%u", (u_int)(key - KEYC_USER)); strlcat(out, tmp, sizeof out); goto out; diff --git a/server-client.c b/server-client.c index 1133beb3..77dd1746 100644 --- a/server-client.c +++ b/server-client.c @@ -29,19 +29,6 @@ #include "tmux.h" -enum mouse_where { - NOWHERE, - PANE, - STATUS, - STATUS_LEFT, - STATUS_RIGHT, - STATUS_DEFAULT, - BORDER, - SCROLLBAR_UP, - SCROLLBAR_SLIDER, - SCROLLBAR_DOWN -}; - static void server_client_free(int, short, void *); static void server_client_check_pane_resize(struct window_pane *); static void server_client_check_pane_buffer(struct window_pane *); @@ -609,7 +596,7 @@ server_client_exec(struct client *c, const char *cmd) free(msg); } -static enum mouse_where +static enum key_code_mouse_location server_client_check_mouse_in_pane(struct window_pane *wp, u_int px, u_int py, u_int *sl_mpos) { @@ -656,16 +643,16 @@ server_client_check_mouse_in_pane(struct window_pane *wp, u_int px, u_int py, sl_bottom = (wp->yoff + wp->sb_slider_y + wp->sb_slider_h - 1); if (py < sl_top) - return (SCROLLBAR_UP); + return (KEYC_MOUSE_LOCATION_SCROLLBAR_UP); else if (py >= sl_top && py <= sl_bottom) { *sl_mpos = (py - wp->sb_slider_y - wp->yoff); - return (SCROLLBAR_SLIDER); + return (KEYC_MOUSE_LOCATION_SCROLLBAR_SLIDER); } else /* py > sl_bottom */ - return (SCROLLBAR_DOWN); + return (KEYC_MOUSE_LOCATION_SCROLLBAR_DOWN); } else { /* Must be inside the pane. */ - return (PANE); + return (KEYC_MOUSE_LOCATION_PANE); } } else if (~w->flags & WINDOW_ZOOMED) { /* Try the pane borders if not zoomed. */ @@ -682,42 +669,35 @@ server_client_check_mouse_in_pane(struct window_pane *wp, u_int px, u_int py, break; } if (fwp != NULL) - return (BORDER); + return (KEYC_MOUSE_LOCATION_BORDER); } - return (NOWHERE); + return (KEYC_MOUSE_LOCATION_NOWHERE); } /* Check for mouse keys. */ static key_code server_client_check_mouse(struct client *c, struct key_event *event) { - struct mouse_event *m = &event->m; - struct session *s = c->session, *fs; - struct window *w = s->curw->window; - struct winlink *fwl; - struct window_pane *wp, *fwp; - u_int x, y, b, sx, sy, px, py, sl_mpos = 0; - int ignore = 0; - key_code key; - struct timeval tv; - struct style_range *sr; - enum { NOTYPE, - MOVE, - DOWN, - UP, - DRAG, - WHEEL, - SECOND, - DOUBLE, - TRIPLE } type = NOTYPE; - enum mouse_where where = NOWHERE; + struct mouse_event *m = &event->m; + struct session *s = c->session, *fs; + struct window *w = s->curw->window; + struct winlink *fwl; + struct window_pane *wp, *fwp; + u_int x, y, sx, sy, px, py, sl_mpos = 0; + u_int b, bn; + int ignore = 0; + key_code key; + struct timeval tv; + struct style_range *sr; + enum key_code_type type = KEYC_TYPE_NOTYPE; + enum key_code_mouse_location loc = KEYC_MOUSE_LOCATION_NOWHERE; log_debug("%s mouse %02x at %u,%u (last %u,%u) (%d)", c->name, m->b, m->x, m->y, m->lx, m->ly, c->tty.mouse_drag_flag); /* What type of event is this? */ if (event->key == KEYC_DOUBLECLICK) { - type = DOUBLE; + type = KEYC_TYPE_DOUBLECLICK; x = m->x, y = m->y, b = m->b; ignore = 1; log_debug("double-click at %u,%u", x, y); @@ -728,11 +708,11 @@ server_client_check_mouse(struct client *c, struct key_event *event) MOUSE_DRAG(m->b) && MOUSE_RELEASE(m->b) && MOUSE_RELEASE(m->lb))) { - type = MOVE; + type = KEYC_TYPE_MOUSEMOVE; x = m->x, y = m->y, b = 0; log_debug("move at %u,%u", x, y); } else if (MOUSE_DRAG(m->b)) { - type = DRAG; + type = KEYC_TYPE_MOUSEDRAG; if (c->tty.mouse_drag_flag) { x = m->x, y = m->y, b = m->b; if (x == m->lx && y == m->ly) @@ -743,11 +723,14 @@ server_client_check_mouse(struct client *c, struct key_event *event) log_debug("drag start at %u,%u", x, y); } } else if (MOUSE_WHEEL(m->b)) { - type = WHEEL; + if ((m->b & MOUSE_MASK_BUTTONS) == MOUSE_WHEEL_UP) + type = KEYC_TYPE_WHEELUP; + else + type = KEYC_TYPE_WHEELDOWN; x = m->x, y = m->y, b = m->b; log_debug("wheel at %u,%u", x, y); } else if (MOUSE_RELEASE(m->b)) { - type = UP; + type = KEYC_TYPE_MOUSEUP; x = m->x, y = m->y, b = m->lb; if (m->sgr_type == 'm') b = m->sgr_b; @@ -756,22 +739,22 @@ server_client_check_mouse(struct client *c, struct key_event *event) if (c->flags & CLIENT_DOUBLECLICK) { evtimer_del(&c->click_timer); c->flags &= ~CLIENT_DOUBLECLICK; - type = SECOND; + type = KEYC_TYPE_SECONDCLICK; x = m->x, y = m->y, b = m->b; log_debug("second-click at %u,%u", x, y); c->flags |= CLIENT_TRIPLECLICK; } else if (c->flags & CLIENT_TRIPLECLICK) { evtimer_del(&c->click_timer); c->flags &= ~CLIENT_TRIPLECLICK; - type = TRIPLE; + type = KEYC_TYPE_TRIPLECLICK; x = m->x, y = m->y, b = m->b; log_debug("triple-click at %u,%u", x, y); goto have_event; } /* DOWN is the only remaining event type. */ - if (type == NOTYPE) { - type = DOWN; + if (type == KEYC_TYPE_NOTYPE) { + type = KEYC_TYPE_MOUSEDOWN; x = m->x, y = m->y, b = m->b; log_debug("down at %u,%u", x, y); c->flags |= CLIENT_DOUBLECLICK; @@ -779,7 +762,7 @@ server_client_check_mouse(struct client *c, struct key_event *event) } have_event: - if (type == NOTYPE) + if (type == KEYC_TYPE_NOTYPE) return (KEYC_UNKNOWN); /* Save the session. */ @@ -796,18 +779,18 @@ have_event: y < m->statusat + m->statuslines) { sr = status_get_range(c, x, y - m->statusat); if (sr == NULL) { - where = STATUS_DEFAULT; + loc = KEYC_MOUSE_LOCATION_STATUS_DEFAULT; } else { switch (sr->type) { case STYLE_RANGE_NONE: return (KEYC_UNKNOWN); case STYLE_RANGE_LEFT: log_debug("mouse range: left"); - where = STATUS_LEFT; + loc = KEYC_MOUSE_LOCATION_STATUS_LEFT; break; case STYLE_RANGE_RIGHT: log_debug("mouse range: right"); - where = STATUS_RIGHT; + loc = KEYC_MOUSE_LOCATION_STATUS_RIGHT; break; case STYLE_RANGE_PANE: fwp = window_pane_find_by_id(sr->argument); @@ -816,7 +799,7 @@ have_event: m->wp = sr->argument; log_debug("mouse range: pane %%%u", m->wp); - where = STATUS; + loc = KEYC_MOUSE_LOCATION_STATUS; break; case STYLE_RANGE_WINDOW: fwl = winlink_find_by_index(&s->windows, @@ -826,7 +809,7 @@ have_event: m->w = fwl->window->id; log_debug("mouse range: window @%u", m->w); - where = STATUS; + loc = KEYC_MOUSE_LOCATION_STATUS; break; case STYLE_RANGE_SESSION: fs = session_find_by_id(sr->argument); @@ -835,10 +818,10 @@ have_event: m->s = sr->argument; log_debug("mouse range: session $%u", m->s); - where = STATUS; + loc = KEYC_MOUSE_LOCATION_STATUS; break; case STYLE_RANGE_USER: - where = STATUS; + loc = KEYC_MOUSE_LOCATION_STATUS; break; } } @@ -848,9 +831,9 @@ have_event: * Not on status line. Adjust position and check for border, pane, or * scrollbar. */ - if (where == NOWHERE) { + if (loc == KEYC_MOUSE_LOCATION_NOWHERE) { if (c->tty.mouse_scrolling_flag) - where = SCROLLBAR_SLIDER; + loc = KEYC_MOUSE_LOCATION_SCROLLBAR_SLIDER; else { px = x; if (m->statusat == 0 && y >= m->statuslines) @@ -872,17 +855,17 @@ have_event: wp = window_get_active_at(w, px, py); if (wp == NULL) return (KEYC_UNKNOWN); - where = server_client_check_mouse_in_pane(wp, px, py, + loc = server_client_check_mouse_in_pane(wp, px, py, &sl_mpos); - if (where == PANE) { + if (loc == KEYC_MOUSE_LOCATION_PANE) { log_debug("mouse %u,%u on pane %%%u", x, y, wp->id); - } else if (where == BORDER) + } else if (loc == KEYC_MOUSE_LOCATION_BORDER) log_debug("mouse on pane %%%u border", wp->id); - else if (where == SCROLLBAR_UP || - where == SCROLLBAR_SLIDER || - where == SCROLLBAR_DOWN) { + else if (loc == KEYC_MOUSE_LOCATION_SCROLLBAR_UP || + loc == KEYC_MOUSE_LOCATION_SCROLLBAR_SLIDER || + loc == KEYC_MOUSE_LOCATION_SCROLLBAR_DOWN) { log_debug("mouse on pane %%%u scrollbar", wp->id); } @@ -892,23 +875,23 @@ have_event: } /* Reset click type or add a click timer if needed. */ - if (type == DOWN || - type == SECOND || - type == TRIPLE) { - if (type != DOWN && + if (type == KEYC_TYPE_MOUSEDOWN || + type == KEYC_TYPE_SECONDCLICK || + type == KEYC_TYPE_TRIPLECLICK) { + if (type != KEYC_TYPE_MOUSEDOWN && (m->b != c->click_button || - where != (enum mouse_where)c->click_where || + loc != (enum key_code_mouse_location)c->click_loc || m->wp != c->click_wp)) { - type = DOWN; + type = KEYC_TYPE_MOUSEDOWN; log_debug("click sequence reset at %u,%u", x, y); c->flags &= ~CLIENT_TRIPLECLICK; c->flags |= CLIENT_DOUBLECLICK; } - if (type != TRIPLE && KEYC_CLICK_TIMEOUT != 0) { + if (type != KEYC_TYPE_TRIPLECLICK && KEYC_CLICK_TIMEOUT != 0) { memcpy(&c->click_event, m, sizeof c->click_event); c->click_button = m->b; - c->click_where = where; + c->click_loc = loc; c->click_wp = m->wp; log_debug("click timer started"); @@ -919,11 +902,14 @@ have_event: } } + key = KEYC_UNKNOWN; + /* Stop dragging if needed. */ - if (type != DRAG && - type != WHEEL && - type != DOUBLE && - type != TRIPLE && + if (type != KEYC_TYPE_MOUSEDRAG && + type != KEYC_TYPE_WHEELUP && + type != KEYC_TYPE_WHEELDOWN && + type != KEYC_TYPE_DOUBLECLICK && + type != KEYC_TYPE_TRIPLECLICK && c->tty.mouse_drag_flag != 0) { if (c->tty.mouse_drag_release != NULL) c->tty.mouse_drag_release(c, m); @@ -936,374 +922,24 @@ have_event: * End a mouse drag by passing a MouseDragEnd key corresponding * to the button that started the drag. */ - switch (c->tty.mouse_drag_flag - 1) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_MOUSEDRAGEND1_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND1_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND1_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_MOUSEDRAGEND2_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND2_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND2_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_MOUSEDRAGEND3_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND3_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND3_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_MOUSEDRAGEND6_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND6_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND6_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_MOUSEDRAGEND7_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND7_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND7_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_MOUSEDRAGEND8_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND8_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND8_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_MOUSEDRAGEND9_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND9_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND9_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_MOUSEDRAGEND10_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND10_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND10_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND10_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND10_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND10_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND10_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_MOUSEDRAGEND11_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAGEND11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAGEND11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAGEND11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAGEND11_STATUS_DEFAULT; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAGEND11_SCROLLBAR_SLIDER; - if (where == BORDER) - key = KEYC_MOUSEDRAGEND11_BORDER; - break; - default: - key = KEYC_MOUSE; - break; - } c->tty.mouse_drag_flag = 0; c->tty.mouse_slider_mpos = -1; - goto out; } /* Convert to a key binding. */ - key = KEYC_UNKNOWN; - switch (type) { - case NOTYPE: - break; - case MOVE: - if (where == PANE) { - key = KEYC_MOUSEMOVE_PANE; - if (wp != NULL && - wp != w->active && - options_get_number(s->options, "focus-follows-mouse")) { - window_set_active_pane(w, wp, 1); - server_redraw_window_borders(w); - server_status_window(w); - } + if (type == KEYC_TYPE_MOUSEMOVE && loc == KEYC_MOUSE_LOCATION_PANE) { + key = KEYC_MOUSEMOVE_PANE; + if (wp != NULL && + wp != w->active && + options_get_number(s->options, "focus-follows-mouse")) { + window_set_active_pane(w, wp, 1); + server_redraw_window_borders(w); + server_status_window(w); } - if (where == STATUS) - key = KEYC_MOUSEMOVE_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEMOVE_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEMOVE_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEMOVE_STATUS_DEFAULT; - if (where == BORDER) - key = KEYC_MOUSEMOVE_BORDER; - break; - case DRAG: + } + if (type == KEYC_TYPE_MOUSEDRAG) { if (c->tty.mouse_drag_update != NULL) key = KEYC_DRAGGING; - else { - switch (MOUSE_BUTTONS(b)) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_MOUSEDRAG1_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG1_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG1_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG1_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_MOUSEDRAG2_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG2_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG2_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG2_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG2_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_MOUSEDRAG3_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG3_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG3_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG3_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG3_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_MOUSEDRAG6_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG6_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG6_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG6_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG6_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_MOUSEDRAG7_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG7_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG7_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG7_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG7_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_MOUSEDRAG8_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG8_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG8_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG8_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG8_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_MOUSEDRAG9_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG9_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG9_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG9_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG9_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_MOUSEDRAG10_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG10_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG10_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG10_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG10_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG10_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG10_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG10_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG10_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_MOUSEDRAG11_PANE; - if (where == STATUS) - key = KEYC_MOUSEDRAG11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDRAG11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDRAG11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDRAG11_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDRAG11_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDRAG11_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDRAG11_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDRAG11_BORDER; - break; - } - } /* * Begin a drag by setting the flag to a non-zero value that @@ -1313,7 +949,7 @@ have_event: */ c->tty.mouse_drag_flag = MOUSE_BUTTONS(b) + 1; if (c->tty.mouse_scrolling_flag == 0 && - where == SCROLLBAR_SLIDER) { + loc == KEYC_MOUSE_LOCATION_SCROLLBAR_SLIDER) { c->tty.mouse_scrolling_flag = 1; if (m->statusat == 0) { c->tty.mouse_slider_mpos = sl_mpos + @@ -1321,961 +957,33 @@ have_event: } else c->tty.mouse_slider_mpos = sl_mpos; } - break; - case WHEEL: - if (MOUSE_BUTTONS(b) == MOUSE_WHEEL_UP) { - if (where == PANE) - key = KEYC_WHEELUP_PANE; - if (where == STATUS) - key = KEYC_WHEELUP_STATUS; - if (where == STATUS_LEFT) - key = KEYC_WHEELUP_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_WHEELUP_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_WHEELUP_STATUS_DEFAULT; - if (where == BORDER) - key = KEYC_WHEELUP_BORDER; - } else { - if (where == PANE) - key = KEYC_WHEELDOWN_PANE; - if (where == STATUS) - key = KEYC_WHEELDOWN_STATUS; - if (where == STATUS_LEFT) - key = KEYC_WHEELDOWN_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_WHEELDOWN_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_WHEELDOWN_STATUS_DEFAULT; - if (where == BORDER) - key = KEYC_WHEELDOWN_BORDER; - } - break; - case UP: - switch (MOUSE_BUTTONS(b)) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_MOUSEUP1_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP1_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP1_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP1_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_MOUSEUP2_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP2_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP2_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP2_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP2_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_MOUSEUP3_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP3_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP3_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP3_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP3_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_MOUSEUP6_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP6_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP6_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP6_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP6_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_MOUSEUP7_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP7_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP7_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP7_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP7_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_MOUSEUP8_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP8_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP8_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP8_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP8_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_MOUSEUP9_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP9_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP9_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP9_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP9_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_MOUSEUP1_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP10_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP10_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP10_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP1_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_MOUSEUP11_PANE; - if (where == STATUS) - key = KEYC_MOUSEUP11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEUP11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEUP11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEUP11_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEUP11_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEUP11_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEUP11_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEUP11_BORDER; - break; - } - break; - case DOWN: - switch (MOUSE_BUTTONS(b)) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_MOUSEDOWN1_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN1_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN1_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN1_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_MOUSEDOWN2_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN2_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN2_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN2_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN2_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_MOUSEDOWN3_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN3_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN3_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN3_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN3_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_MOUSEDOWN6_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN6_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN6_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN6_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN6_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_MOUSEDOWN7_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN7_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN7_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN7_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN7_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_MOUSEDOWN8_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN8_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN8_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN8_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN8_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_MOUSEDOWN9_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN9_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN9_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN9_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN9_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_MOUSEDOWN10_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN10_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN10_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN10_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN10_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN10_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN10_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN10_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN10_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_MOUSEDOWN11_PANE; - if (where == STATUS) - key = KEYC_MOUSEDOWN11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_MOUSEDOWN11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_MOUSEDOWN11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_MOUSEDOWN11_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_MOUSEDOWN11_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_MOUSEDOWN11_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_MOUSEDOWN11_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_MOUSEDOWN11_BORDER; - break; - } - break; - case SECOND: - switch (MOUSE_BUTTONS(b)) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_SECONDCLICK1_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK1_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK1_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK1_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_SECONDCLICK2_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK2_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK2_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK2_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK2_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_SECONDCLICK3_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK3_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK3_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK3_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK3_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_SECONDCLICK6_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK6_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK6_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK6_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK6_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_SECONDCLICK7_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK7_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK7_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK7_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK7_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_SECONDCLICK8_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK8_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK8_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK8_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK8_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_SECONDCLICK9_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK9_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK9_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK9_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK9_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_SECONDCLICK10_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK10_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK10_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK10_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK10_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK10_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK10_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK10_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK10_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_SECONDCLICK11_PANE; - if (where == STATUS) - key = KEYC_SECONDCLICK11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_SECONDCLICK11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_SECONDCLICK11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_SECONDCLICK11_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_SECONDCLICK11_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_SECONDCLICK11_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_SECONDCLICK11_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_SECONDCLICK11_BORDER; - break; - } - break; - case DOUBLE: - switch (MOUSE_BUTTONS(b)) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_DOUBLECLICK1_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK1_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK1_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK1_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_DOUBLECLICK2_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK2_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK2_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK2_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK2_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_DOUBLECLICK3_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK3_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK3_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK3_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK3_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_DOUBLECLICK6_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK6_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK6_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK6_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK6_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_DOUBLECLICK7_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK7_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK7_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK7_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK7_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_DOUBLECLICK8_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK8_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK8_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK8_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK8_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_DOUBLECLICK9_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK9_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK9_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK9_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK9_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_DOUBLECLICK10_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK10_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK10_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK10_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK10_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK10_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK10_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK10_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK10_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_DOUBLECLICK11_PANE; - if (where == STATUS) - key = KEYC_DOUBLECLICK11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_DOUBLECLICK11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_DOUBLECLICK11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_DOUBLECLICK11_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_DOUBLECLICK11_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_DOUBLECLICK11_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_DOUBLECLICK11_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_DOUBLECLICK11_BORDER; - break; - } - break; - case TRIPLE: - switch (MOUSE_BUTTONS(b)) { - case MOUSE_BUTTON_1: - if (where == PANE) - key = KEYC_TRIPLECLICK1_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK1_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK1_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK1_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK1_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK1_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK1_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK1_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK1_BORDER; - break; - case MOUSE_BUTTON_2: - if (where == PANE) - key = KEYC_TRIPLECLICK2_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK2_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK2_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK2_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK2_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK2_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK2_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK2_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK2_BORDER; - break; - case MOUSE_BUTTON_3: - if (where == PANE) - key = KEYC_TRIPLECLICK3_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK3_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK3_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK3_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK3_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK3_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK3_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK3_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK3_BORDER; - break; - case MOUSE_BUTTON_6: - if (where == PANE) - key = KEYC_TRIPLECLICK6_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK6_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK6_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK6_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK6_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK6_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK6_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK6_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK6_BORDER; - break; - case MOUSE_BUTTON_7: - if (where == PANE) - key = KEYC_TRIPLECLICK7_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK7_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK7_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK7_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK7_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK7_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK7_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK7_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK7_BORDER; - break; - case MOUSE_BUTTON_8: - if (where == PANE) - key = KEYC_TRIPLECLICK8_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK8_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK8_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK8_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK8_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK8_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK8_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK8_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK8_BORDER; - break; - case MOUSE_BUTTON_9: - if (where == PANE) - key = KEYC_TRIPLECLICK9_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK9_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK9_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK9_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK9_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK9_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK9_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK9_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK9_BORDER; - break; - case MOUSE_BUTTON_10: - if (where == PANE) - key = KEYC_TRIPLECLICK10_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK10_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK10_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK10_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK10_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK10_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK10_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK10_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK10_BORDER; - break; - case MOUSE_BUTTON_11: - if (where == PANE) - key = KEYC_TRIPLECLICK11_PANE; - if (where == STATUS) - key = KEYC_TRIPLECLICK11_STATUS; - if (where == STATUS_LEFT) - key = KEYC_TRIPLECLICK11_STATUS_LEFT; - if (where == STATUS_RIGHT) - key = KEYC_TRIPLECLICK11_STATUS_RIGHT; - if (where == STATUS_DEFAULT) - key = KEYC_TRIPLECLICK11_STATUS_DEFAULT; - if (where == SCROLLBAR_UP) - key = KEYC_TRIPLECLICK11_SCROLLBAR_UP; - if (where == SCROLLBAR_SLIDER) - key = KEYC_TRIPLECLICK11_SCROLLBAR_SLIDER; - if (where == SCROLLBAR_DOWN) - key = KEYC_TRIPLECLICK11_SCROLLBAR_DOWN; - if (where == BORDER) - key = KEYC_TRIPLECLICK11_BORDER; - break; - } - break; } - if (key == KEYC_UNKNOWN) - return (KEYC_UNKNOWN); -out: + if (key == KEYC_UNKNOWN) { + /* Adjust the button number */ + if (b == MOUSE_BUTTON_1) + bn = 1; + else if (b == MOUSE_BUTTON_2) + bn = 2; + else if (b == MOUSE_BUTTON_3) + bn = 3; + else if (b == MOUSE_BUTTON_6) + bn = 6; + else if (b == MOUSE_BUTTON_7) + bn = 7; + else if (b == MOUSE_BUTTON_8) + bn = 8; + else if (b == MOUSE_BUTTON_9) + bn = 9; + else if (b == MOUSE_BUTTON_10) + bn = 10; + else if (b == MOUSE_BUTTON_11) + bn = 11; + else + bn = 0; + key = KEYC_MAKE_MOUSE_KEY(type, bn, loc); + } + /* Apply modifiers if any. */ if (b & MOUSE_MASK_META) key |= KEYC_META; diff --git a/tmux.h b/tmux.h index e45b58e2..f42dec56 100644 --- a/tmux.h +++ b/tmux.h @@ -129,18 +129,6 @@ struct winlink; #define VISUAL_ON 1 #define VISUAL_BOTH 2 -/* No key or unknown key. */ -#define KEYC_NONE 0x000ff000000000ULL -#define KEYC_UNKNOWN 0x000fe000000000ULL - -/* - * Base for special (that is, not Unicode) keys. An enum must be at most a - * signed int, so these are based in the highest Unicode PUA. - */ -#define KEYC_BASE 0x0000000010e000ULL -#define KEYC_USER 0x0000000010f000ULL -#define KEYC_USER_END (KEYC_USER + KEYC_NUSER) - /* Key modifier bits. */ #define KEYC_META 0x00100000000000ULL #define KEYC_CTRL 0x00200000000000ULL @@ -156,45 +144,102 @@ struct winlink; #define KEYC_SENT 0x40000000000000ULL /* Masks for key bits. */ -#define KEYC_MASK_MODIFIERS 0x00f00000000000ULL +#define KEYC_MASK_TYPE 0x0000ff00000000ULL +#define KEYC_MASK_MODIFIERS 0x00ff0000000000ULL #define KEYC_MASK_FLAGS 0xff000000000000ULL -#define KEYC_MASK_KEY 0x000fffffffffffULL +#define KEYC_MASK_KEY 0x0000ffffffffffULL -/* Available user keys. */ -#define KEYC_NUSER 1000 +#define KEYC_NUSER 1000 +#define KEYC_SHIFT_TYPE(t) ((unsigned long long)(t) << 32) +#define KEYC_IS_TYPE(k, t) (((k) & KEYC_MASK_TYPE) == KEYC_SHIFT_TYPE(t)) +enum key_code_type { + KEYC_TYPE_UNICODE, + KEYC_TYPE_USER, + KEYC_TYPE_FUNCTION, + KEYC_TYPE_MOUSEMOVE, + KEYC_TYPE_MOUSEDOWN, + KEYC_TYPE_MOUSEUP, + KEYC_TYPE_MOUSEDRAG, + KEYC_TYPE_MOUSEDRAGEND, + KEYC_TYPE_WHEELDOWN, + KEYC_TYPE_WHEELUP, + KEYC_TYPE_SECONDCLICK, + KEYC_TYPE_DOUBLECLICK, + KEYC_TYPE_TRIPLECLICK, + KEYC_TYPE_NOTYPE /* end */ +}; -/* Is this a mouse key? */ -#define KEYC_IS_MOUSE(key) \ - (((key) & KEYC_MASK_KEY) >= KEYC_MOUSE && \ - ((key) & KEYC_MASK_KEY) < KEYC_BSPACE) +enum key_code_mouse_location { + KEYC_MOUSE_LOCATION_PANE, + KEYC_MOUSE_LOCATION_STATUS, + KEYC_MOUSE_LOCATION_STATUS_LEFT, + KEYC_MOUSE_LOCATION_STATUS_RIGHT, + KEYC_MOUSE_LOCATION_STATUS_DEFAULT, + KEYC_MOUSE_LOCATION_BORDER, + KEYC_MOUSE_LOCATION_SCROLLBAR_UP, + KEYC_MOUSE_LOCATION_SCROLLBAR_SLIDER, + KEYC_MOUSE_LOCATION_SCROLLBAR_DOWN, + KEYC_MOUSE_LOCATION_NOWHERE /* end */ +}; /* Is this a Unicode key? */ #define KEYC_IS_UNICODE(key) \ - (((key) & KEYC_MASK_KEY) > 0x7f && \ - (((key) & KEYC_MASK_KEY) < KEYC_BASE || \ - ((key) & KEYC_MASK_KEY) >= KEYC_BASE_END) && \ - (((key) & KEYC_MASK_KEY) < KEYC_USER || \ - ((key) & KEYC_MASK_KEY) >= KEYC_USER_END)) + (((key) & KEYC_MASK_TYPE) == KEYC_SHIFT_TYPE(KEYC_TYPE_UNICODE) && \ + ((key) & KEYC_MASK_KEY) > 0x7f) + +/* Is this a user key? */ +#define KEYC_IS_USER(key) \ + (((key) & KEYC_MASK_TYPE) == KEYC_SHIFT_TYPE(KEYC_TYPE_USER)) + +/* Is this a function key? */ +#define KEYC_IS_SPECIAL(key) \ + (((key) & KEYC_MASK_TYPE) == KEYC_SHIFT_TYPE(KEYC_TYPE_FUNCTION)) + +/* Is this a mouse key? */ +#define KEYC_IS_MOUSE(key) \ + (((key) & KEYC_MASK_KEY) == KEYC_MOUSE || \ + (((key) & KEYC_MASK_TYPE) >= KEYC_SHIFT_TYPE(KEYC_TYPE_MOUSEMOVE) && \ + ((key) & KEYC_MASK_TYPE) <= KEYC_SHIFT_TYPE(KEYC_TYPE_TRIPLECLICK))) /* Is this a paste key? */ #define KEYC_IS_PASTE(key) \ - (((key) & KEYC_MASK_KEY) == KEYC_PASTE_START || \ - ((key) & KEYC_MASK_KEY) == KEYC_PASTE_END) + (((key) & KEYC_MASK_TYPE) == KEYC_SHIFT_TYPE(KEYC_TYPE_FUNCTION) && \ + (((key) & KEYC_MASK_KEY) == KEYC_PASTE_START || \ + ((key) & KEYC_MASK_KEY) == KEYC_PASTE_END)) /* Multiple click timeout. */ #define KEYC_CLICK_TIMEOUT 300 +/* Bit shift for mouse events. */ +#define KEYC_MOUSE_LOCATION_SHIFT 0 +#define KEYC_MOUSE_BUTTON_SHIFT 8 + /* Mouse key codes. */ -#define KEYC_MOUSE_KEY(name) \ - KEYC_ ## name ## _PANE, \ - KEYC_ ## name ## _STATUS, \ - KEYC_ ## name ## _STATUS_LEFT, \ - KEYC_ ## name ## _STATUS_RIGHT, \ - KEYC_ ## name ## _STATUS_DEFAULT, \ - KEYC_ ## name ## _SCROLLBAR_UP, \ - KEYC_ ## name ## _SCROLLBAR_SLIDER, \ - KEYC_ ## name ## _SCROLLBAR_DOWN, \ - KEYC_ ## name ## _BORDER +#define KEYC_MOUSE_KEYS(t) \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, PANE), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, STATUS), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, STATUS_LEFT), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, STATUS_RIGHT), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, STATUS_DEFAULT), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, BORDER), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, SCROLLBAR_UP), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, SCROLLBAR_SLIDER), \ + KEYC_MOUSE_KEY(KEYC_ ## t, KEYC_TYPE_ ## t, SCROLLBAR_DOWN) +#define KEYC_MOUSE_KEY(p, t, l) \ + p ## _ ## l = KEYC_MAKE_MOUSE_KEY(t, 0, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 1_ ## l = KEYC_MAKE_MOUSE_KEY(t, 1, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 2_ ## l = KEYC_MAKE_MOUSE_KEY(t, 2, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 3_ ## l = KEYC_MAKE_MOUSE_KEY(t, 3, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 6_ ## l = KEYC_MAKE_MOUSE_KEY(t, 6, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 7_ ## l = KEYC_MAKE_MOUSE_KEY(t, 7, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 8_ ## l = KEYC_MAKE_MOUSE_KEY(t, 8, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 9_ ## l = KEYC_MAKE_MOUSE_KEY(t, 9, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 10_ ## l = KEYC_MAKE_MOUSE_KEY(t, 10, KEYC_MOUSE_LOCATION_ ## l), \ + p ## 11_ ## l = KEYC_MAKE_MOUSE_KEY(t, 11, KEYC_MOUSE_LOCATION_ ## l) +#define KEYC_MAKE_MOUSE_KEY(t, b, l) \ + ((KEYC_SHIFT_TYPE(t)) | \ + ((unsigned long long)(b) << KEYC_MOUSE_BUTTON_SHIFT) | \ + ((unsigned long long)(l) << KEYC_MOUSE_LOCATION_SHIFT)) #define KEYC_MOUSE_STRING(name, s) \ { #s "Pane", KEYC_ ## name ## _PANE }, \ { #s "Status", KEYC_ ## name ## _STATUS }, \ @@ -250,8 +295,15 @@ enum { /* Special key codes. */ enum { + /* User key code range. */ + KEYC_USER = KEYC_SHIFT_TYPE(KEYC_TYPE_USER), + + /* Functional key code range. */ + KEYC_NONE = KEYC_SHIFT_TYPE(KEYC_TYPE_FUNCTION), + KEYC_UNKNOWN, + /* Focus events. */ - KEYC_FOCUS_IN = KEYC_BASE, + KEYC_FOCUS_IN, KEYC_FOCUS_OUT, /* "Any" key, used if not found in key table. */ @@ -261,77 +313,6 @@ enum { KEYC_PASTE_START, KEYC_PASTE_END, - /* Mouse keys. */ - KEYC_MOUSE, /* unclassified mouse event */ - KEYC_DRAGGING, /* dragging in progress */ - KEYC_DOUBLECLICK, /* double click complete */ - KEYC_MOUSE_KEY(MOUSEMOVE), - KEYC_MOUSE_KEY(MOUSEDOWN1), - KEYC_MOUSE_KEY(MOUSEDOWN2), - KEYC_MOUSE_KEY(MOUSEDOWN3), - KEYC_MOUSE_KEY(MOUSEDOWN6), - KEYC_MOUSE_KEY(MOUSEDOWN7), - KEYC_MOUSE_KEY(MOUSEDOWN8), - KEYC_MOUSE_KEY(MOUSEDOWN9), - KEYC_MOUSE_KEY(MOUSEDOWN10), - KEYC_MOUSE_KEY(MOUSEDOWN11), - KEYC_MOUSE_KEY(MOUSEUP1), - KEYC_MOUSE_KEY(MOUSEUP2), - KEYC_MOUSE_KEY(MOUSEUP3), - KEYC_MOUSE_KEY(MOUSEUP6), - KEYC_MOUSE_KEY(MOUSEUP7), - KEYC_MOUSE_KEY(MOUSEUP8), - KEYC_MOUSE_KEY(MOUSEUP9), - KEYC_MOUSE_KEY(MOUSEUP10), - KEYC_MOUSE_KEY(MOUSEUP11), - KEYC_MOUSE_KEY(MOUSEDRAG1), - KEYC_MOUSE_KEY(MOUSEDRAG2), - KEYC_MOUSE_KEY(MOUSEDRAG3), - KEYC_MOUSE_KEY(MOUSEDRAG6), - KEYC_MOUSE_KEY(MOUSEDRAG7), - KEYC_MOUSE_KEY(MOUSEDRAG8), - KEYC_MOUSE_KEY(MOUSEDRAG9), - KEYC_MOUSE_KEY(MOUSEDRAG10), - KEYC_MOUSE_KEY(MOUSEDRAG11), - KEYC_MOUSE_KEY(MOUSEDRAGEND1), - KEYC_MOUSE_KEY(MOUSEDRAGEND2), - KEYC_MOUSE_KEY(MOUSEDRAGEND3), - KEYC_MOUSE_KEY(MOUSEDRAGEND6), - KEYC_MOUSE_KEY(MOUSEDRAGEND7), - KEYC_MOUSE_KEY(MOUSEDRAGEND8), - KEYC_MOUSE_KEY(MOUSEDRAGEND9), - KEYC_MOUSE_KEY(MOUSEDRAGEND10), - KEYC_MOUSE_KEY(MOUSEDRAGEND11), - KEYC_MOUSE_KEY(WHEELUP), - KEYC_MOUSE_KEY(WHEELDOWN), - KEYC_MOUSE_KEY(SECONDCLICK1), - KEYC_MOUSE_KEY(SECONDCLICK2), - KEYC_MOUSE_KEY(SECONDCLICK3), - KEYC_MOUSE_KEY(SECONDCLICK6), - KEYC_MOUSE_KEY(SECONDCLICK7), - KEYC_MOUSE_KEY(SECONDCLICK8), - KEYC_MOUSE_KEY(SECONDCLICK9), - KEYC_MOUSE_KEY(SECONDCLICK10), - KEYC_MOUSE_KEY(SECONDCLICK11), - KEYC_MOUSE_KEY(DOUBLECLICK1), - KEYC_MOUSE_KEY(DOUBLECLICK2), - KEYC_MOUSE_KEY(DOUBLECLICK3), - KEYC_MOUSE_KEY(DOUBLECLICK6), - KEYC_MOUSE_KEY(DOUBLECLICK7), - KEYC_MOUSE_KEY(DOUBLECLICK8), - KEYC_MOUSE_KEY(DOUBLECLICK9), - KEYC_MOUSE_KEY(DOUBLECLICK10), - KEYC_MOUSE_KEY(DOUBLECLICK11), - KEYC_MOUSE_KEY(TRIPLECLICK1), - KEYC_MOUSE_KEY(TRIPLECLICK2), - KEYC_MOUSE_KEY(TRIPLECLICK3), - KEYC_MOUSE_KEY(TRIPLECLICK6), - KEYC_MOUSE_KEY(TRIPLECLICK7), - KEYC_MOUSE_KEY(TRIPLECLICK8), - KEYC_MOUSE_KEY(TRIPLECLICK9), - KEYC_MOUSE_KEY(TRIPLECLICK10), - KEYC_MOUSE_KEY(TRIPLECLICK11), - /* Backspace key. */ KEYC_BSPACE, @@ -384,8 +365,22 @@ enum { KEYC_REPORT_DARK_THEME, KEYC_REPORT_LIGHT_THEME, - /* End of special keys. */ - KEYC_BASE_END + /* Mouse state. */ + KEYC_MOUSE, /* unclassified mouse event */ + KEYC_DRAGGING, /* dragging in progress */ + KEYC_DOUBLECLICK, /* double click complete */ + + /* Mouse key code ranges. Must be at the end. */ + KEYC_MOUSE_KEYS(MOUSEMOVE), + KEYC_MOUSE_KEYS(WHEELDOWN), + KEYC_MOUSE_KEYS(WHEELUP), + KEYC_MOUSE_KEYS(MOUSEDOWN), + KEYC_MOUSE_KEYS(MOUSEUP), + KEYC_MOUSE_KEYS(MOUSEDRAG), + KEYC_MOUSE_KEYS(MOUSEDRAGEND), + KEYC_MOUSE_KEYS(SECONDCLICK), + KEYC_MOUSE_KEYS(DOUBLECLICK), + KEYC_MOUSE_KEYS(TRIPLECLICK), }; /* Termcap codes. */ @@ -1989,7 +1984,7 @@ struct client { struct event repeat_timer; struct event click_timer; - int click_where; + int click_loc; int click_wp; u_int click_button; struct mouse_event click_event;