From 8485cdaaaa5f26d3c12dbffd07fd9061ed10f56a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 19 Apr 2022 17:25:06 +0200 Subject: [PATCH] csi: implement CSI > 4n (reset modifyOtherKeys) --- CHANGELOG.md | 4 ++++ csi.c | 18 ++++++++++++++++++ doc/foot-ctlseqs.7.scd | 8 +++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38450ab3..081a513c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,10 @@ is similar to `show-urls-launch`, but does not automatically exit URL mode after activating an URL (https://codeberg.org/dnkl/foot/issues/964). +* Support for `CSI > 4 n`, disable _modifyOtherKeys_. Note that since + foot only supports level 1 and 2 (and not level 0), this sequence + does not disable _modifyOtherKeys_ completely, but simply reverts it + back to level 1 (the default). ### Changed diff --git a/csi.c b/csi.c index d3a76e7f..57cae6b3 100644 --- a/csi.c +++ b/csi.c @@ -1497,6 +1497,24 @@ csi_dispatch(struct terminal *term, uint8_t final) } break; /* final == 'm' */ + case 'n': { + int resource = vt_param_get(term, 0, 2); /* Default is modifyFuncionKeys */ + switch (resource) { + case 0: /* modifyKeyboard */ + case 1: /* modifyCursorKeys */ + case 2: /* modifyFunctionKeys */ + break; + + case 4: /* modifyOtherKeys */ + /* We don’t support fully disabling modifyOtherKeys, + * but simply revert back to mode ‘1’ */ + term->modify_other_keys_2 = false; + LOG_DBG("modifyOtherKeys=1"); + break; + } + break; + } + case 'u': { int flags = vt_param_get(term, 0, 0) & KITTY_KBD_SUPPORTED; diff --git a/doc/foot-ctlseqs.7.scd b/doc/foot-ctlseqs.7.scd index 8f23ebed..2759b625 100644 --- a/doc/foot-ctlseqs.7.scd +++ b/doc/foot-ctlseqs.7.scd @@ -563,8 +563,14 @@ manipulation sequences. The generic format is: | \\E[ > 4 ; _Pv_ m : XTMODKEYS : xterm -: Set level of the _modifyOtherKey_ property to _Pv_. Note that foot +: Set level of the _modifyOtherKeys_ property to _Pv_. Note that foot only supports level 1 and 2, where level 1 is the default setting. +| \\E[ > 4 n +: +: xterm +: Resets the _modifyOtherKeys_ property to level 1. Note that in foot, + this sequence does not completely disable _modifyOtherKeys_, since + foot only supports level 1 and level 2 (and not level 0). | \\E[ ? u : : kitty