version 1.13, 2009/10/26 17:59:46 |
version 1.14, 2009/11/04 22:43:11 |
|
|
u_int i; |
u_int i; |
size_t dlen; |
size_t dlen; |
char *out; |
char *out; |
|
u_char ch; |
|
|
log_debug2("writing key 0x%x", key); |
log_debug2("writing key 0x%x", key); |
|
|
|
|
*/ |
*/ |
if (key != KEYC_NONE && (key & ~KEYC_ESCAPE) < 0x100) { |
if (key != KEYC_NONE && (key & ~KEYC_ESCAPE) < 0x100) { |
if (key & KEYC_ESCAPE) |
if (key & KEYC_ESCAPE) |
buffer_write8(wp->out, '\033'); |
ch = '\033'; |
buffer_write8(wp->out, (uint8_t) (key & ~KEYC_ESCAPE)); |
else |
|
ch = key & ~KEYC_ESCAPE; |
|
bufferevent_write(wp->event, &ch, 1); |
return; |
return; |
} |
} |
|
|
|
|
*/ |
*/ |
if (options_get_number(&wp->window->options, "xterm-keys")) { |
if (options_get_number(&wp->window->options, "xterm-keys")) { |
if ((out = xterm_keys_lookup(key)) != NULL) { |
if ((out = xterm_keys_lookup(key)) != NULL) { |
buffer_write(wp->out, out, strlen(out)); |
bufferevent_write(wp->event, out, strlen(out)); |
xfree(out); |
xfree(out); |
return; |
return; |
} |
} |
|
|
|
|
/* Prefix a \033 for escape. */ |
/* Prefix a \033 for escape. */ |
if (key & KEYC_ESCAPE) |
if (key & KEYC_ESCAPE) |
buffer_write8(wp->out, '\033'); |
bufferevent_write(wp->event, "\033", 1); |
buffer_write(wp->out, ike->data, dlen); |
bufferevent_write(wp->event, ike->data, dlen); |
} |
} |
|
|
/* Translate mouse and output. */ |
/* Translate mouse and output. */ |
void |
void |
input_mouse(struct window_pane *wp, struct mouse_event *m) |
input_mouse(struct window_pane *wp, struct mouse_event *m) |
{ |
{ |
|
char out[8]; |
|
|
if (wp->screen->mode & MODE_MOUSE) { |
if (wp->screen->mode & MODE_MOUSE) { |
buffer_write(wp->out, "\033[M", 3); |
xsnprintf(out, sizeof out, |
buffer_write8(wp->out, m->b + 32); |
"\033[M%c%c%c", m->b + 32, m->x + 33, m->y + 33); |
buffer_write8(wp->out, m->x + 33); |
bufferevent_write(wp->event, out, strlen(out)); |
buffer_write8(wp->out, m->y + 33); |
|
} |
} |
} |
} |