kitty: when emitting associated text, don’t report mods/events unless necessary

This commit is contained in:
Daniel Eklöf 2021-12-07 21:52:43 +01:00
parent c0cfec89e0
commit 52eee4482b
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

14
input.c
View file

@ -1465,7 +1465,7 @@ emit_escapes:
xassert(encoded_mods >= 1); xassert(encoded_mods >= 1);
char event[4]; char event[4];
if (report_events) { if (report_events /*&& !pressed*/) {
/* Note: this deviates slightly from Kitty, which omits the /* Note: this deviates slightly from Kitty, which omits the
* :1 subparameter for key press events */ * :1 subparameter for key press events */
event[0] = ':'; event[0] = ':';
@ -1501,14 +1501,16 @@ emit_escapes:
} }
} }
if (encoded_mods > 1 || event[0] != '\0' || report_associated_text) { bool emit_mods = encoded_mods > 1 || event[0] != '\0';
if (emit_mods) {
bytes = snprintf(p, left, ";%u%s", encoded_mods, event); bytes = snprintf(p, left, ";%u%s", encoded_mods, event);
p += bytes; left -= bytes; p += bytes; left -= bytes;
}
if (report_associated_text) { if (report_associated_text) {
bytes = snprintf(p, left, ";%u", utf32); bytes = snprintf(p, left, "%s;%u", !emit_mods ? ";" : "", utf32);
p += bytes; left -= bytes; p += bytes; left -= bytes;
}
} }
bytes = snprintf(p, left, "%c", final); bytes = snprintf(p, left, "%c", final);