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')