[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] hw/i386/vmmouse:add relative packet flag for button status
From: |
Zongmin Zhou |
Subject: |
[PATCH] hw/i386/vmmouse:add relative packet flag for button status |
Date: |
Thu, 13 Apr 2023 16:15:26 +0800 |
The buttons value use macros instead of direct numbers.
If request relative mode, have to add this for
guest vmmouse driver to judge this is a relative packet.
otherwise,vmmouse driver will not match
the condition 'status & VMMOUSE_RELATIVE_PACKET',
and can't report events on the correct(relative) input device,
result to relative mode unuseful.
Signed-off-by: Zongmin Zhou<zhouzongmin@kylinos.cn>
---
hw/i386/vmmouse.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index a56c185f15..6cd624bd09 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -44,6 +44,12 @@
#define VMMOUSE_VERSION 0x3442554a
+#define VMMOUSE_RELATIVE_PACKET 0x00010000
+
+#define VMMOUSE_LEFT_BUTTON 0x20
+#define VMMOUSE_RIGHT_BUTTON 0x10
+#define VMMOUSE_MIDDLE_BUTTON 0x08
+
#ifdef DEBUG_VMMOUSE
#define DPRINTF(fmt, ...) printf(fmt, ## __VA_ARGS__)
#else
@@ -103,15 +109,18 @@ static void vmmouse_mouse_event(void *opaque, int x, int
y, int dz, int buttons_
x, y, dz, buttons_state);
if ((buttons_state & MOUSE_EVENT_LBUTTON))
- buttons |= 0x20;
+ buttons |= VMMOUSE_LEFT_BUTTON;
if ((buttons_state & MOUSE_EVENT_RBUTTON))
- buttons |= 0x10;
+ buttons |= VMMOUSE_RIGHT_BUTTON;
if ((buttons_state & MOUSE_EVENT_MBUTTON))
- buttons |= 0x08;
+ buttons |= VMMOUSE_MIDDLE_BUTTON;
if (s->absolute) {
x <<= 1;
y <<= 1;
+ } else{
+ /* add for guest vmmouse driver to judge this is a relative packet. */
+ buttons |= VMMOUSE_RELATIVE_PACKET;
}
s->queue[s->nb_queue++] = buttons;
--
2.34.1
No virus found
Checked by Hillstone Network AntiVirus
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] hw/i386/vmmouse:add relative packet flag for button status,
Zongmin Zhou <=