From 7f65bd1c20d74d196b85761a57f093ab28dc0691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 30 Jun 2020 17:43:43 +0200 Subject: [PATCH] csi: '\E[0 q' resets the cursor style to the default, not '\E[2 q' Also update 'Se' capability in the terminfo, to reflect this. --- CHANGELOG.md | 4 ++++ csi.c | 17 +++++++++++------ foot.info | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a5fe627..acb57cdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,10 @@ * Mouse cursor from `hand2` to `left_ptr` when client is capturing the mouse. * Sixel images are now removed when the font size is **decreased**. +* `DECSCUSR` (_Set Cursor Style_, `CSI Ps SP q`) now uses `Ps=0` + instead of `Ps=2` to reset the style to the user configured default + style. `Ps=2` now always configures a _Steady Block_ cursor. +* `Se` terminfo capability from `\E[2 q` to `\E[ q`. ### Deprecated diff --git a/csi.c b/csi.c index 62291aa9..3141a79f 100644 --- a/csi.c +++ b/csi.c @@ -1446,12 +1446,17 @@ csi_dispatch(struct terminal *term, uint8_t final) case 'q': { int param = vt_param_get(term, 0, 0); switch (param) { - case 0: case 1: /* blinking block */ - term->cursor_style = CURSOR_BLOCK; + case 0: /* blinking block, but we use it to reset to configured default */ + term->cursor_style = term->default_cursor_style; + if (term->default_cursor_blink) + term_cursor_blink_enable(term); + else + term_cursor_blink_disable(term); break; - case 2: /* steady block - but can be overriden in footrc */ - term->cursor_style = term->default_cursor_style; + case 1: /* blinking block */ + case 2: /* steady block */ + term->cursor_style = CURSOR_BLOCK; break; case 3: /* blinking underline */ @@ -1469,8 +1474,8 @@ csi_dispatch(struct terminal *term, uint8_t final) break; } - if (param <= 6) { - if (param == 0 || param & 1) + if (param > 0 && param <= 6) { + if (param & 1) term_cursor_blink_enable(term); else term_cursor_blink_disable(term); diff --git a/foot.info b/foot.info index 84e04b27..62eb2beb 100644 --- a/foot.info +++ b/foot.info @@ -30,7 +30,7 @@ foot+base|foot base fragment, Cs=\E]12;%p1%s\E\\, E3=\E[3J, Ms=\E]52;%p1%s;%p2%s\E\\, - Se=\E[2 q, + Se=\E[ q, Ss=\E[%p1%d q, Sync=\EP=%p1%ds\E\\, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,