[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <eecb16842e26e1fe7ca6a4e70ead40b69efe4d0b.1593499846.git.tammo.block@gmail.com>
Date: Tue, 30 Jun 2020 09:11:04 +0200
From: Tammo Block <tammo.block@...il.com>
To: linux-kernel@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jiri Slaby <jslaby@...e.com>
Subject: [PATCH v1 3/6] vt/vt: Enable mode change via escape sequence
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@...il.com>
---
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
Powered by blists - more mailing lists