Message ID | 20230801054334.1034300-1-zhouzongmin@kylinos.cn |
---|---|
State | New |
Headers | show |
Series | [RESEND] hw/i386/vmmouse:add relative packet flag for button status | expand |
On Tue, Aug 1, 2023 at 9:45 AM Zongmin Zhou <zhouzongmin@kylinos.cn> wrote: > > 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; > } Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > > s->queue[s->nb_queue++] = buttons; > -- > 2.34.1 > >
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;
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(-)