diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-05-19 14:01:17 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-05-19 14:01:17 +0100 |
commit | fb9e53ba19a59359ac56fa5e0b9ef59694f7b705 (patch) | |
tree | 02b16aaa7a1c3997f43aa3216d8bbaa68630ab50 /input-keys.c | |
parent | e10f5a72ce671f3096aa242827e25b1c4dbf1de4 (diff) | |
parent | 8425084b8ada98f6465d99d8bc8cad91612e50c5 (diff) | |
download | rtmux-fb9e53ba19a59359ac56fa5e0b9ef59694f7b705.tar.gz rtmux-fb9e53ba19a59359ac56fa5e0b9ef59694f7b705.tar.bz2 rtmux-fb9e53ba19a59359ac56fa5e0b9ef59694f7b705.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'input-keys.c')
-rw-r--r-- | input-keys.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/input-keys.c b/input-keys.c index 59b3495e..4b3d2a36 100644 --- a/input-keys.c +++ b/input-keys.c @@ -497,10 +497,35 @@ 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) { - if ((key & KEYC_MASK_MODIFIERS) == KEYC_CTRL && - (key & KEYC_MASK_KEY) < KEYC_BASE) - return (input_key(s, bev, key & ~KEYC_CTRL)); - goto missing; + justkey = (key & KEYC_MASK_KEY); + if ((key & KEYC_MASK_MODIFIERS) != KEYC_CTRL) + goto missing; + switch (justkey) { + case ' ': + case '2': + key = 0||(key & ~KEYC_MASK_KEY); + break; + case '|': + key = 28|(key & ~KEYC_MASK_KEY); + break; + case '6': + key = 30|(key & ~KEYC_MASK_KEY); + break; + case '-': + case '/': + key = 31|(key & ~KEYC_MASK_KEY); + break; + case '?': + key = 127|(key & ~KEYC_MASK_KEY); + break; + default: + if (justkey >= 'A' && justkey <= '_') + key = (justkey - 'A')|(key & ~KEYC_MASK_KEY); + else if (justkey >= 'a' && justkey <= '~') + key = (justkey - 96)|(key & ~KEYC_MASK_KEY); + break; + } + return (input_key(s, bev, key & ~KEYC_CTRL)); } outkey = (key & KEYC_MASK_KEY); switch (key & KEYC_MASK_MODIFIERS) { |