Map control keys back to an ASCII uppercase letter when passing them on

as extended keys.
This commit is contained in:
nicm 2022-02-28 09:24:22 +00:00
parent e8d6d53a7b
commit 2e59ff2db9

View File

@ -418,7 +418,7 @@ int
input_key(struct screen *s, struct bufferevent *bev, key_code key) input_key(struct screen *s, struct bufferevent *bev, key_code key)
{ {
struct input_key_entry *ike; struct input_key_entry *ike;
key_code justkey, newkey, outkey; key_code justkey, newkey, outkey, modifiers;
struct utf8_data ud; struct utf8_data ud;
char tmp[64], modifier; char tmp[64], modifier;
@ -519,7 +519,12 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
return (input_key(s, bev, key & ~KEYC_CTRL)); return (input_key(s, bev, key & ~KEYC_CTRL));
} }
outkey = (key & KEYC_MASK_KEY); outkey = (key & KEYC_MASK_KEY);
switch (key & KEYC_MASK_MODIFIERS) { modifiers = (key & KEYC_MASK_MODIFIERS);
if (outkey < ' ') {
outkey = 64 + outkey;
modifiers |= KEYC_CTRL;
}
switch (modifiers) {
case KEYC_SHIFT: case KEYC_SHIFT:
modifier = '2'; modifier = '2';
break; break;