From 44aad0941fff3e314ae42c3c578cfa6d61913198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 4 Jan 2022 22:01:36 +0100 Subject: [PATCH] dcs: xtgettcap: handle boolean capabilities Reply with DCS 1 + r ST --- dcs.c | 8 ++++++++ scripts/generate-builtin-terminfo.py | 9 +++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/dcs.c b/dcs.c index 6fed8010..07fec5c7 100644 --- a/dcs.c +++ b/dcs.c @@ -99,6 +99,14 @@ xtgettcap_reply(struct terminal *term, const char *hex_cap_name, size_t len) if (entry == NULL) goto err; + if (entry->value == NULL) { + /* Boolean */ + term_to_slave(term, "\033P1+r", 5); + term_to_slave(term, hex_cap_name, len); + term_to_slave(term, "\033\\", 2); + goto out; + } + /* * Reply format: * \EP 1 + r cap=value \E\\ diff --git a/scripts/generate-builtin-terminfo.py b/scripts/generate-builtin-terminfo.py index a58b7da3..9c8807bf 100755 --- a/scripts/generate-builtin-terminfo.py +++ b/scripts/generate-builtin-terminfo.py @@ -174,9 +174,6 @@ def main(): 'static const struct foot_terminfo_entry terminfo_capabilities[] = {\n') for cap in sorted(entry.caps.values()): - if isinstance(cap, BoolCapability): - continue - name = cap.name value = str(cap.value) @@ -194,7 +191,11 @@ def main(): # Do escape ‘“‘ name = name.replace('"', '\"') value = value.replace('"', '\"') - target.write(f' {{"{name}", "{value}"}},\n') + + if isinstance(cap, BoolCapability): + target.write(f' {{"{name}", NULL}},\n') + else: + target.write(f' {{"{name}", "{value}"}},\n') target.write('};\n')