diff --git a/kitty/parser.c b/kitty/parser.c index 22f164fbb..8d8b538ca 100644 --- a/kitty/parser.c +++ b/kitty/parser.c @@ -612,7 +612,7 @@ dispatch_csi(Screen *screen, PyObject DUMP_UNUSED *dump_callback) { unsigned int num = screen->parser_buf_pos, start, i, num_params=0, p1, p2; static unsigned int params[MAX_PARAMS] = {0}; bool private; - if (buf[0] == '>' || buf[0] == '?' || buf[0] == '!') { + if (buf[0] == '>' || buf[0] == '?' || buf[0] == '!' || buf[0] == '=') { start_modifier = (char)screen->parser_buf[0]; buf++; num--; } @@ -993,6 +993,7 @@ accumulate_csi(Screen *screen, uint32_t ch, PyObject DUMP_UNUSED *dump_callback) case '?': case '>': case '!': + case '=': if (screen->parser_buf_pos != 0) { REPORT_ERROR("Invalid character in CSI: 0x%x, ignoring the sequence", ch); SET_STATE(0); diff --git a/kitty_tests/parser.py b/kitty_tests/parser.py index 9d3a29beb..6041da252 100644 --- a/kitty_tests/parser.py +++ b/kitty_tests/parser.py @@ -114,6 +114,7 @@ class TestParser(BaseTest): pb('\033[20;4h', ('screen_set_mode', 20, 0), ('screen_set_mode', 4, 0)) pb('\033[?1000;1004h', ('screen_set_mode', 1000, 1), ('screen_set_mode', 1004, 1)) pb('\033[20;4;20l', ('screen_reset_mode', 20, 0), ('screen_reset_mode', 4, 0), ('screen_reset_mode', 20, 0)) + pb('\033[=c', ('report_device_attributes', 0, 61)) s.reset() def sgr(params):