version 1.72, 2020/05/16 16:30:59 |
version 1.73, 2020/05/16 16:33:16 |
|
|
0, |
0, |
0, |
0, |
KEYC_SHIFT|KEYC_XTERM, |
KEYC_SHIFT|KEYC_XTERM, |
KEYC_ESCAPE|KEYC_XTERM, |
KEYC_META|KEYC_XTERM, |
KEYC_SHIFT|KEYC_ESCAPE|KEYC_XTERM, |
KEYC_SHIFT|KEYC_META|KEYC_XTERM, |
KEYC_CTRL|KEYC_XTERM, |
KEYC_CTRL|KEYC_XTERM, |
KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM, |
KEYC_SHIFT|KEYC_CTRL|KEYC_XTERM, |
KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM, |
KEYC_META|KEYC_CTRL|KEYC_XTERM, |
KEYC_SHIFT|KEYC_ESCAPE|KEYC_CTRL|KEYC_XTERM |
KEYC_SHIFT|KEYC_META|KEYC_CTRL|KEYC_XTERM |
}; |
}; |
|
|
/* Input key comparison function. */ |
/* Input key comparison function. */ |
|
|
* If this is a normal 7-bit key, just send it, with a leading escape |
* If this is a normal 7-bit key, just send it, with a leading escape |
* if necessary. If it is a UTF-8 key, split it and send it. |
* if necessary. If it is a UTF-8 key, split it and send it. |
*/ |
*/ |
justkey = (key & ~(KEYC_XTERM|KEYC_ESCAPE)); |
justkey = (key & ~(KEYC_XTERM|KEYC_META)); |
if (justkey <= 0x7f) { |
if (justkey <= 0x7f) { |
if (key & KEYC_ESCAPE) |
if (key & KEYC_META) |
bufferevent_write(bev, "\033", 1); |
bufferevent_write(bev, "\033", 1); |
ud.data[0] = justkey; |
ud.data[0] = justkey; |
bufferevent_write(bev, &ud.data[0], 1); |
bufferevent_write(bev, &ud.data[0], 1); |
|
|
if (justkey > 0x7f && justkey < KEYC_BASE) { |
if (justkey > 0x7f && justkey < KEYC_BASE) { |
if (utf8_split(justkey, &ud) != UTF8_DONE) |
if (utf8_split(justkey, &ud) != UTF8_DONE) |
return (-1); |
return (-1); |
if (key & KEYC_ESCAPE) |
if (key & KEYC_META) |
bufferevent_write(bev, "\033", 1); |
bufferevent_write(bev, "\033", 1); |
bufferevent_write(bev, ud.data, ud.size); |
bufferevent_write(bev, ud.data, ud.size); |
return (0); |
return (0); |
|
|
log_debug("found key 0x%llx: \"%s\"", key, ike->data); |
log_debug("found key 0x%llx: \"%s\"", key, ike->data); |
|
|
/* Prefix a \033 for escape. */ |
/* Prefix a \033 for escape. */ |
if (key & KEYC_ESCAPE) |
if (key & KEYC_META) |
bufferevent_write(bev, "\033", 1); |
bufferevent_write(bev, "\033", 1); |
bufferevent_write(bev, ike->data, datalen); |
bufferevent_write(bev, ike->data, datalen); |
return (0); |
return (0); |