From 090e14ef5535cab76f43f0f13a27bb319509cd54 Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 8 Apr 2021 14:16:12 +0000 Subject: [PATCH] Log the key written to the terminal as well as tmux's idea of what it is. --- usr.bin/tmux/input-keys.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/usr.bin/tmux/input-keys.c b/usr.bin/tmux/input-keys.c index 6d74ce51265..bbb047025d3 100644 --- a/usr.bin/tmux/input-keys.c +++ b/usr.bin/tmux/input-keys.c @@ -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 @@ -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); } -- 2.20.1