Change how extended ctrl keys are processed to fix C-S-Tab and C-;.
authornicm <nicm@openbsd.org>
Tue, 13 Apr 2021 12:26:34 +0000 (12:26 +0000)
committernicm <nicm@openbsd.org>
Tue, 13 Apr 2021 12:26:34 +0000 (12:26 +0000)
usr.bin/tmux/tty-keys.c

index 0e210b8..14adc1c 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty-keys.c,v 1.145 2021/04/13 05:23:34 nicm Exp $ */
+/* $OpenBSD: tty-keys.c,v 1.146 2021/04/13 12:26:34 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -955,23 +955,19 @@ tty_keys_extended_key(struct tty *tty, const char *buf, size_t len,
         */
        if (nkey & KEYC_CTRL) {
                onlykey = (nkey & KEYC_MASK_KEY);
-               if (onlykey < 32) {
-                       if (onlykey != 9)
-                               onlykey = (nkey & ~KEYC_CTRL);
-                       else
-                               onlykey = (9|KEYC_CTRL);
-               } else {
-                       if (onlykey >= 97 && onlykey <= 122)
-                               onlykey -= 96;
-                       else if (onlykey >= 64 && onlykey <= 95)
-                               onlykey -= 64;
-                       else if (onlykey == 32)
-                               onlykey = 0;
-                       else if (onlykey == 63)
-                               onlykey = 127;
-                       onlykey |= ((nkey & KEYC_MASK_MODIFIERS) & ~KEYC_CTRL);
-               }
-               nkey = onlykey;
+               if (onlykey < 32 && onlykey != 9)
+                       /* nothing */;
+               else if (onlykey >= 97 && onlykey <= 122)
+                       onlykey -= 96;
+               else if (onlykey >= 64 && onlykey <= 95)
+                       onlykey -= 64;
+               else if (onlykey == 32)
+                       onlykey = 0;
+               else if (onlykey == 63)
+                       onlykey = 127;
+               else
+                       onlykey |= KEYC_CTRL;
+               nkey = onlykey|((nkey & KEYC_MASK_MODIFIERS) & ~KEYC_CTRL);
        }
 
        if (log_get_level() != 0) {