The report protocol stored in vc_report_mouse is not a bitmask, the
protocols are mutually exclusive, last one wins. Values are chosen to
maximize compatibility.

Signed-off-by: Tammo Block <tammo.bl...@gmail.com>
---
 drivers/tty/vt/vt.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index 48a8199f7845..d52ac57034e0 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -1890,13 +1890,22 @@ 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 : 0;
                                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 : 0;
+                               break;
+                       case 1002:
+                               vc->vc_report_mouse = on_off ? TIOCL_REPORTDRAG 
: 0;
+                               break;
+                       case 1003:
+                               vc->vc_report_mouse = on_off ? 
TIOCL_REPORTANYMOVE : 0;
+                               break;
+                       case 1006:
+                               vc->vc_proto_mouse = on_off ? 1 : 0;
                                break;
                        }
                } else {
-- 
2.27.0

Reply via email to