diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-06-01 18:01:18 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-06-01 18:01:18 +0100 |
commit | 191a836560f1b1996c4976eb496b27a6d428ba21 (patch) | |
tree | a25d3fdec9615e872f46c3bd2a068c8532ccc158 /input-keys.c | |
parent | 91e40de2da5124b1593c1c25462b8c9a36b8ebfd (diff) | |
parent | 674ec410b7ecf14fa24e9c3987469a4d9da599c1 (diff) | |
download | rtmux-191a836560f1b1996c4976eb496b27a6d428ba21.tar.gz rtmux-191a836560f1b1996c4976eb496b27a6d428ba21.tar.bz2 rtmux-191a836560f1b1996c4976eb496b27a6d428ba21.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'input-keys.c')
-rw-r--r-- | input-keys.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/input-keys.c b/input-keys.c index d298395e..ff402503 100644 --- a/input-keys.c +++ b/input-keys.c @@ -486,9 +486,13 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) ike = input_key_get(key); if (ike == NULL && (key & KEYC_META) && (~key & KEYC_IMPLIED_META)) ike = input_key_get(key & ~KEYC_META); + if (ike == NULL && (key & KEYC_CURSOR)) + ike = input_key_get(key & ~KEYC_CURSOR); + if (ike == NULL && (key & KEYC_KEYPAD)) + ike = input_key_get(key & ~KEYC_KEYPAD); if (ike != NULL) { log_debug("found key 0x%llx: \"%s\"", key, ike->data); - if (key & KEYC_META && (~key & KEYC_IMPLIED_META)) + if ((key & KEYC_META) && (~key & KEYC_IMPLIED_META)) bufferevent_write(bev, "\033", 1); bufferevent_write(bev, ike->data, strlen(ike->data)); return (0); @@ -496,13 +500,13 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) /* No builtin key sequence; construct an extended key sequence. */ if (~s->mode & MODE_KEXTENDED) { - justkey = (key & KEYC_MASK_KEY); if ((key & KEYC_MASK_MODIFIERS) != KEYC_CTRL) goto missing; + justkey = (key & KEYC_MASK_KEY); switch (justkey) { case ' ': case '2': - key = 0||(key & ~KEYC_MASK_KEY); + key = 0|(key & ~KEYC_MASK_KEY); break; case '|': key = 28|(key & ~KEYC_MASK_KEY); @@ -522,6 +526,8 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) key = (justkey - 'A')|(key & ~KEYC_MASK_KEY); else if (justkey >= 'a' && justkey <= '~') key = (justkey - 96)|(key & ~KEYC_MASK_KEY); + else + return (0); break; } return (input_key(s, bev, key & ~KEYC_CTRL)); |