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? Cheers