=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/input-keys.c,v retrieving revision 1.76 retrieving revision 1.77 diff -u -r1.76 -r1.77 --- src/usr.bin/tmux/input-keys.c 2020/05/16 16:44:54 1.76 +++ src/usr.bin/tmux/input-keys.c 2020/05/19 10:59:09 1.77 @@ -1,4 +1,4 @@ -/* $OpenBSD: input-keys.c,v 1.76 2020/05/16 16:44:54 nicm Exp $ */ +/* $OpenBSD: input-keys.c,v 1.77 2020/05/19 10:59:09 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -498,10 +498,35 @@ /* 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) {