diff options
author | Thomas Adam <thomas@xteddy.org> | 2015-11-23 21:21:12 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2015-11-23 21:21:12 +0000 |
commit | b642b3c8e388d0c9a81d18ae183bb62cfd24d434 (patch) | |
tree | a72efec9e4617bfea8043a5895f9254de7f84742 /tty-keys.c | |
parent | d63de1e407176bab41c61ad7f3def0e4d0707cdc (diff) | |
parent | 32e510bd70eedbeec8590b9bf786b11430ddaac3 (diff) | |
download | rtmux-b642b3c8e388d0c9a81d18ae183bb62cfd24d434.tar.gz rtmux-b642b3c8e388d0c9a81d18ae183bb62cfd24d434.tar.bz2 rtmux-b642b3c8e388d0c9a81d18ae183bb62cfd24d434.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'tty-keys.c')
-rw-r--r-- | tty-keys.c | 36 |
1 files changed, 8 insertions, 28 deletions
@@ -481,6 +481,7 @@ tty_keys_next(struct tty *tty) /* Get key buffer. */ buf = EVBUFFER_DATA(tty->event->input); len = EVBUFFER_LENGTH(tty->event->input); + if (len == 0) return (0); log_debug("keys are %zu (%.*s)", len, (int) len, buf); @@ -653,10 +654,8 @@ int tty_keys_mouse(struct tty *tty, const char *buf, size_t len, size_t *size) { struct mouse_event *m = &tty->mouse; - struct utf8_data ud; - u_int i, value, x, y, b, sgr_b; + u_int i, x, y, b, sgr_b; u_char sgr_type, c; - enum utf8_state more; /* * Standard mouse sequences are \033[M followed by three characters @@ -686,8 +685,8 @@ tty_keys_mouse(struct tty *tty, const char *buf, size_t len, size_t *size) return (1); /* - * Third byte is M in old standard and UTF-8 extension, < in SGR - * extension. + * Third byte is M in old standard (and UTF-8 extension which we do not + * support), < in SGR extension. */ if (buf[2] == 'M') { /* Read the three inputs. */ @@ -695,32 +694,13 @@ tty_keys_mouse(struct tty *tty, const char *buf, size_t len, size_t *size) for (i = 0; i < 3; i++) { if (len <= *size) return (1); - - if (tty->mode & MODE_MOUSE_UTF8) { - if (utf8_open(&ud, buf[*size]) == UTF8_MORE) { - if (ud.size != 2) - return (-1); - (*size)++; - if (len <= *size) - return (1); - more = utf8_append(&ud, buf[*size]); - if (more != UTF8_DONE) - return (-1); - value = utf8_combine(&ud); - } else - value = (u_char)buf[*size]; - (*size)++; - } else { - value = (u_char)buf[*size]; - (*size)++; - } - + c = (u_char)buf[(*size)++]; if (i == 0) - b = value; + b = c; else if (i == 1) - x = value; + x = c; else - y = value; + y = c; } log_debug("mouse input: %.*s", (int)*size, buf); |