Apply the xterm key flag when needed for send-keys, fixes problem
authornicm <nicm@openbsd.org>
Wed, 28 Jun 2017 11:36:39 +0000 (11:36 +0000)
committernicm <nicm@openbsd.org>
Wed, 28 Jun 2017 11:36:39 +0000 (11:36 +0000)
reported by Franky Spamschleuder.

usr.bin/tmux/cmd-send-keys.c
usr.bin/tmux/input-keys.c
usr.bin/tmux/tmux.h
usr.bin/tmux/window.c

index 82312d6..2d602ba 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-send-keys.c,v 1.41 2017/05/10 10:46:59 nicm Exp $ */
+/* $OpenBSD: cmd-send-keys.c,v 1.42 2017/06/28 11:36:39 nicm Exp $ */
 
 /*
  * Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -64,6 +64,8 @@ cmd_send_keys_inject(struct client *c, struct cmdq_item *item, key_code key)
        struct key_binding      *bd, bd_find;
 
        if (wp->mode == NULL || wp->mode->key_table == NULL) {
+               if (options_get_number(wp->window->options, "xterm-keys"))
+                       key |= KEYC_XTERM;
                window_pane_key(wp, NULL, s, key, NULL);
                return;
        }
index 6bd0668..86810a7 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: input-keys.c,v 1.61 2017/06/12 07:04:24 nicm Exp $ */
+/* $OpenBSD: input-keys.c,v 1.62 2017/06/28 11:36:39 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -177,7 +177,7 @@ input_key(struct window_pane *wp, key_code key, struct mouse_event *m)
         * If this is a normal 7-bit key, just send it, with a leading escape
         * if necessary. If it is a UTF-8 key, split it and send it.
         */
-       justkey = (key & ~KEYC_ESCAPE);
+       justkey = (key & ~(KEYC_XTERM|KEYC_ESCAPE));
        if (justkey <= 0x7f) {
                if (key & KEYC_ESCAPE)
                        bufferevent_write(wp->event, "\033", 1);
index bdff961..848b312 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.787 2017/06/23 15:36:52 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.788 2017/06/28 11:36:39 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -94,8 +94,8 @@ struct tmuxproc;
 
 /* Key modifier bits. */
 #define KEYC_ESCAPE 0x200000000000ULL
-#define KEYC_CTRL   0x400000000000ULL
-#define KEYC_SHIFT  0x800000000000ULL
+#define KEYC_CTRL 0x400000000000ULL
+#define KEYC_SHIFT 0x800000000000ULL
 #define KEYC_XTERM 0x1000000000000ULL
 
 /* Mask to obtain key w/o modifiers. */
index a890801..9330bbc 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: window.c,v 1.198 2017/06/04 09:02:36 nicm Exp $ */
+/* $OpenBSD: window.c,v 1.199 2017/06/28 11:36:40 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1226,7 +1226,7 @@ window_pane_key(struct window_pane *wp, struct client *c, struct session *s,
        if (wp->mode != NULL) {
                wp->modelast = time(NULL);
                if (wp->mode->key != NULL)
-                       wp->mode->key(wp, c, s, key, m);
+                       wp->mode->key(wp, c, s, (key & ~KEYC_XTERM), m);
                return;
        }