From f4291690ee5775418a44b67ca452480225529b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 30 Aug 2019 22:01:05 +0200 Subject: [PATCH] csi: CSI h isn't a valid sequence - it needs a parameter And, 'insert mode' isn't activated with \e[h, but with \e[4h. --- csi.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/csi.c b/csi.c index 225d9cb0..1e456064 100644 --- a/csi.c +++ b/csi.c @@ -516,14 +516,38 @@ csi_dispatch(struct terminal *term, uint8_t final) } case 'h': - /* smir - insert mode enable */ - assert(false && "untested"); - term->insert_mode = true; + /* Set mode */ + switch (vt_param_get(term, 0, 0)) { + case 2: /* Keyboard Action Mode - AM */ + LOG_WARN("unimplemented: keyboard action mode (AM)"); + break; + + case 4: /* Insert Mode - IRM */ + term->insert_mode = true; + break; + + case 12: /* Send/receive Mode - SRM */ + LOG_WARN("unimplemented: send/receive mode (SRM)"); + break; + + case 20: /* Automatic Newline Mode - LNM */ + LOG_WARN("unimplemented: automatic newline mode (LNM)"); + break; + } break; case 'l': - /* rmir - insert mode disable */ - term->insert_mode = false; + /* Reset mode */ + switch (vt_param_get(term, 0, 0)) { + case 4: /* Insert Mode - IRM */ + term->insert_mode = false; + break; + + case 2: /* Keyboard Action Mode - AM */ + case 12: /* Send/receive Mode - SRM */ + case 20: /* Automatic Newline Mode - LNM */ + break; + } break; case 'r': {