[PATCH v1 3/6] vt/vt: Enable mode change via escape sequence
From: Tammo Block
Date: Tue Jun 30 2020 - 03:11:08 EST
This enables userspace to enable one of the mouse protocols and choose
one of the new event types by escape sequences.
They are not a bitmasks, but mutually exclusive.
And don't forget to reset protocol value also if resetting vc.
Signed-off-by: Tammo Block <tammo.block@xxxxxxxxx>
---
drivers/tty/vt/vt.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 673177d4e859..e2324d8e4e74 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1896,13 +1896,25 @@ static void set_mode(struct vc_data *vc, int on_off)
clr_kbd(vc, decarm);
break;
case 9:
- vc->vc_report_mouse = on_off ? 1 : 0;
+ vc->vc_report_mouse = on_off * TIOCL_REPORTBTNPRESS;
break;
case 25: /* Cursor on/off */
vc->vc_deccm = on_off;
break;
case 1000:
- vc->vc_report_mouse = on_off ? 2 : 0;
+ vc->vc_report_mouse = on_off * TIOCL_REPORTRELEASE;
+ break;
+ case 1002:
+ vc->vc_report_mouse = on_off * TIOCL_REPORTDRAG;
+ break;
+ case 1003:
+ vc->vc_report_mouse = on_off * TIOCL_REPORTANYMOVE;
+ break;
+ case 1006: /* SRG protocol */
+ vc->vc_protocol_mouse = on_off * 1;
+ break;
+ case 1015: /* URXVT protocol */
+ vc->vc_protocol_mouse = on_off * 2;
break;
}
} else {
@@ -2067,6 +2079,7 @@ static void reset_terminal(struct vc_data *vc, int do_clear)
vc->state.charset = 0;
vc->vc_need_wrap = 0;
vc->vc_report_mouse = 0;
+ vc->vc_protocol_mouse = 0;
vc->vc_utf = default_utf8;
vc->vc_utf_count = 0;
--
2.27.0