Handle C-Tab correctly with extended keys, GitHub issue 2642.
authornicm <nicm@openbsd.org>
Tue, 13 Apr 2021 05:23:34 +0000 (05:23 +0000)
committernicm <nicm@openbsd.org>
Tue, 13 Apr 2021 05:23:34 +0000 (05:23 +0000)
usr.bin/tmux/tty-keys.c

index 78b8090..0e210b8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tty-keys.c,v 1.144 2021/04/07 15:46:12 nicm Exp $ */
+/* $OpenBSD: tty-keys.c,v 1.145 2021/04/13 05:23:34 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -953,11 +953,14 @@ tty_keys_extended_key(struct tty *tty, const char *buf, size_t len,
         * Don't allow both KEYC_CTRL and as an implied modifier. Also convert
         * C-X into C-x and so on.
         */
-       if (nkey & KEYC_CTRL){
+       if (nkey & KEYC_CTRL) {
                onlykey = (nkey & KEYC_MASK_KEY);
-               if (onlykey < 32)
-                       onlykey = (nkey & ~KEYC_CTRL);
-               else {
+               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)