On 13 July 2011 23:05, Andreas Färber <andreas.faer...@web.de> wrote: > Am 12.07.2011 um 09:47 schrieb Jan Kiszka: > >> On 2011-07-04 20:15, andrzej zaborowski wrote: >>> >>> On 26 June 2011 11:11, Jan Kiszka <jan.kis...@web.de> wrote: >>>> >>>> On 2011-06-25 15:10, Andreas Färber wrote: >>>>> >>>>> Am 25.06.2011 um 14:55 schrieb Jan Kiszka: >>>>> >>>>>> On 2011-06-25 14:37, Andreas Färber wrote: >>>>>>> >>>>>>> Am 24.06.2011 um 16:27 schrieb Jan Kiszka: >>>>>>> >>>>>>>> For unknown reasons, Windows drivers (tested with XP and Win7) >>>>>>>> ignore >>>>>>>> usb-tablet events that move the pointer to 0/0. So always set bit 0 >>>>>>>> of >>>>>>>> the coordinates. >>>>>>>> >>>>>>>> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> >>>>>>>> --- >>>>>>>> hw/usb-hid.c | 6 ++++-- >>>>>>>> 1 files changed, 4 insertions(+), 2 deletions(-) >>>>>>>> >>>>>>>> diff --git a/hw/usb-hid.c b/hw/usb-hid.c >>>>>>>> index d711b5c..2b9a451 100644 >>>>>>>> --- a/hw/usb-hid.c >>>>>>>> +++ b/hw/usb-hid.c >>>>>>>> @@ -457,8 +457,10 @@ static void >>>>>>>> usb_pointer_event_combine(USBPointerEvent *e, int xyrel, >>>>>>>> e->xdx += x1; >>>>>>>> e->ydy += y1; >>>>>>>> } else { >>>>>>>> - e->xdx = x1; >>>>>>>> - e->ydy = y1; >>>>>>>> + /* Windows drivers do not like the 0/0 position and ignore >>>>>>>> such >>>>>>>> + * events. */ >>>>>>>> + e->xdx = x1 | 1; >>>>>>>> + e->ydy = y1 | 1; >>>>>>> >>>>>>> Doesn't this change mean we can't access any other even pixel either? >>>>>> >>>>>> Only on 32767x32767 screens (that's the resolution of the tablet). >>>>> >>>>> Well, if it's just a fix for 0/0 I would've expected something like: >>>>> >>>>> e->xdx = x1 ? x1 : 1; >>>>> e->ydy = y1 ? y1 : 1; >>>> >>>> Works as well, my version is a little bit simpler. But I don't mind, >>>> will post whatever is preferred to fix this. >>> >>> Would it be enough to just do this for x or y, not both? >> >> Yes, looks like. Is this one better?
I pushed this version, thanks. Cheers