Log the key written to the terminal as well as tmux's idea of what it
authornicm <nicm@openbsd.org>
Thu, 8 Apr 2021 14:16:12 +0000 (14:16 +0000)
committernicm <nicm@openbsd.org>
Thu, 8 Apr 2021 14:16:12 +0000 (14:16 +0000)
is.

usr.bin/tmux/input-keys.c

index 6d74ce5..bbb0470 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: input-keys.c,v 1.81 2020/11/17 08:13:35 nicm Exp $ */
+/* $OpenBSD: input-keys.c,v 1.82 2021/04/08 14:16:12 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -429,6 +429,14 @@ input_key_pane(struct window_pane *wp, key_code key, struct mouse_event *m)
        return (input_key(wp->screen, wp->event, key));
 }
 
+static void
+input_key_write(const char *from, struct bufferevent *bev, const void *data,
+    size_t size)
+{
+       log_debug("%s: %.*s", from, (int)size, data);
+       bufferevent_write(bev, data, size);
+}
+
 /* Translate a key code into an output key sequence. */
 int
 input_key(struct screen *s, struct bufferevent *bev, key_code key)
@@ -445,7 +453,7 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
        /* Literal keys go as themselves (can't be more than eight bits). */
        if (key & KEYC_LITERAL) {
                ud.data[0] = (u_char)key;
-               bufferevent_write(bev, &ud.data[0], 1);
+               input_key_write(__func__, bev, &ud.data[0], 1);
                return (0);
        }
 
@@ -464,16 +472,16 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
        justkey = (key & ~(KEYC_META|KEYC_IMPLIED_META));
        if (justkey <= 0x7f) {
                if (key & KEYC_META)
-                       bufferevent_write(bev, "\033", 1);
+                       input_key_write(__func__, bev, "\033", 1);
                ud.data[0] = justkey;
-               bufferevent_write(bev, &ud.data[0], 1);
+               input_key_write(__func__, bev, &ud.data[0], 1);
                return (0);
        }
        if (justkey > 0x7f && justkey < KEYC_BASE) {
                if (key & KEYC_META)
-                       bufferevent_write(bev, "\033", 1);
+                       input_key_write(__func__, bev, "\033", 1);
                utf8_to_data(justkey, &ud);
-               bufferevent_write(bev, ud.data, ud.size);
+               input_key_write(__func__, bev, ud.data, ud.size);
                return (0);
        }
 
@@ -495,8 +503,8 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
        if (ike != NULL) {
                log_debug("found key 0x%llx: \"%s\"", key, ike->data);
                if ((key & KEYC_META) && (~key & KEYC_IMPLIED_META))
-                       bufferevent_write(bev, "\033", 1);
-               bufferevent_write(bev, ike->data, strlen(ike->data));
+                       input_key_write(__func__, bev, "\033", 1);
+               input_key_write(__func__, bev, ike->data, strlen(ike->data));
                return (0);
        }
 
@@ -561,7 +569,7 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key)
                goto missing;
        }
        xsnprintf(tmp, sizeof tmp, "\033[%llu;%cu", outkey, modifier);
-       bufferevent_write(bev, tmp, strlen(tmp));
+       input_key_write(__func__, bev, tmp, strlen(tmp));
        return (0);
 
 missing:
@@ -657,5 +665,5 @@ input_key_mouse(struct window_pane *wp, struct mouse_event *m)
        if (!input_key_get_mouse(s, m, x, y, &buf, &len))
                return;
        log_debug("writing mouse %.*s to %%%u", (int)len, buf, wp->id);
-       bufferevent_write(wp->event, buf, len);
+       input_key_write(__func__, wp->event, buf, len);
 }