qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] vnc,ps2: fix the PS/2 mouse work badly when connect VNC
@ 2023-07-17  2:59 Shiyuan Gao
  2023-07-17  7:40 ` Marc-André Lureau
  2023-07-17 10:04 ` Daniel P. Berrangé
  0 siblings, 2 replies; 12+ messages in thread
From: Shiyuan Gao @ 2023-07-17  2:59 UTC (permalink / raw)
  To: qemu-devel
  Cc: Gerd Hoffmann, Marc-André Lureau, Mark Cave-Ayland,
	Peter Maydell, Shiyuan Gao

When only use PS/2 mouse without usb-tablet, the mouse pointer of the
guest on the VNC will work badly that the cursor of VNC is inconsistent
with the mouse pointer of guest.

The reason is the PS/2 mouse use relative coordinates and we can't know
the initial position of the guest mouse pointer.

So move the guest mouse pointer to (0, 0) of the screen when connect the
VNC, and then move the mouse pointer to the cursor of VNC(absolute
coordinates are also relative coordinates).

On windows VM, also need disable "Enhance Pointer Precision" Option in
"Pointer Options" (Control Panel -> Mouse).

Signed-off-by: Shiyuan Gao <gaoshiyuan@baidu.com>
---
 hw/input/ps2.c | 2 +-
 ui/vnc.c       | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index 45af76a837..e1f44bd298 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -77,7 +77,7 @@
 #define MOUSE_STATUS_ENABLED    0x20
 #define MOUSE_STATUS_SCALE21    0x10
 
-#define PS2_QUEUE_SIZE      16  /* Queue size required by PS/2 protocol */
+#define PS2_QUEUE_SIZE      32  /* Queue size required by PS/2 protocol */
 #define PS2_QUEUE_HEADROOM  8   /* Queue size for keyboard command replies */
 
 /* Bits for 'modifiers' field in PS2KbdState */
diff --git a/ui/vnc.c b/ui/vnc.c
index 92964dcc0c..a1a6048ee4 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1816,6 +1816,11 @@ static void pointer_event(VncState *vs, int button_mask, int x, int y)
         if (vs->last_x != -1) {
             qemu_input_queue_rel(con, INPUT_AXIS_X, x - vs->last_x);
             qemu_input_queue_rel(con, INPUT_AXIS_Y, y - vs->last_y);
+        } else {
+            qemu_input_queue_rel(con, INPUT_AXIS_X, 0 - width);
+            qemu_input_queue_rel(con, INPUT_AXIS_Y, 0 - height);
+            x = 0;
+            y = 0;
         }
         vs->last_x = x;
         vs->last_y = y;
-- 
2.27.0



^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-07-18  2:09 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-17  2:59 [PATCH] vnc,ps2: fix the PS/2 mouse work badly when connect VNC Shiyuan Gao
2023-07-17  7:40 ` Marc-André Lureau
2023-07-17  8:53   ` Gao,Shiyuan
2023-07-17  9:16     ` Marc-André Lureau
2023-07-17 10:05       ` Daniel P. Berrangé
2023-07-17 12:52       ` Gao,Shiyuan
2023-07-17 13:12         ` Marc-André Lureau
2023-07-17 13:41           ` Gao,Shiyuan
2023-07-17 14:05             ` Marc-André Lureau
2023-07-18  2:07               ` Gao,Shiyuan
2023-07-17 10:04 ` Daniel P. Berrangé
2023-07-17 12:49   ` Gao,Shiyuan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).