From 751c323b829c36ca63a123a02a51f971ca3bd409 Mon Sep 17 00:00:00 2001 From: Vadim Ushakov Date: Sun, 14 Jan 2024 09:22:17 -0700 Subject: [PATCH] sc: Use current console rather than first console for mouse input When mouse reporting feature is turned on (control sequence ^[[?1000h), syscons sends valid mouse coordinates only for ttyv0. Applications running on other ttys always (erroneously) get mouse coordinates from the first tty, not from tty they actually run. Steps to reproduce: 1. On ttyv0, run any application that uses mouse reporting feature. Make some clicks. The feature works properly. 2. Switch to another ttyv, run the application. The application receives mouse click events, but mouse position reported by syscons to the application does not match with the actual mouse position on the screen. Expected result: Reported mouse position should match with visible mouse position. PR: 193339 Reviewed by: imp --- sys/dev/syscons/scmouse.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/syscons/scmouse.c b/sys/dev/syscons/scmouse.c index f23f412cc00d..b0c7fcc9d147 100644 --- a/sys/dev/syscons/scmouse.c +++ b/sys/dev/syscons/scmouse.c @@ -798,7 +798,7 @@ sc_mouse_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td) cur_scp->status &= ~MOUSE_HIDDEN; if (cur_scp->mouse_level > 0) { - sc_mouse_input(scp, mouse); + sc_mouse_input(cur_scp, mouse); break; } @@ -859,7 +859,7 @@ sc_mouse_ioctl(struct tty *tp, u_long cmd, caddr_t data, struct thread *td) cur_scp->status &= ~MOUSE_HIDDEN; if (cur_scp->mouse_level > 0) { - sc_mouse_input(scp, mouse); + sc_mouse_input(cur_scp, mouse); break; }