Re: [Qemu-devel] [PATCH v2] usb-hid: Fix 0/0 position for Windows in tablet mode
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
Re: [Qemu-devel] [PATCH v2] usb-hid: Fix 0/0 position for Windows in tablet mode
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? To me it looks better, yes. Thanks, Andreas --8- From: Jan Kiszka jan.kis...@siemens.com For unknown reasons, Windows drivers (tested with XP and Win7) ignore usb-tablet events that move the pointer to 0/0. So always report 0/0 as 1/0. Signed-off-by: Jan Kiszka jan.kis...@siemens.com --- hw/usb-hid.c |5 + 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/hw/usb-hid.c b/hw/usb-hid.c index d711b5c..faf91c4 100644 --- a/hw/usb-hid.c +++ b/hw/usb-hid.c @@ -459,6 +459,11 @@ static void usb_pointer_event_combine(USBPointerEvent *e, int xyrel, } else { e-xdx = x1; e-ydy = y1; +/* Windows drivers do not like the 0/0 position and ignore such + * events. */ +if (!(x1 | y1)) { +x1 = 1; +} } e-dz += z1; } -- 1.7.3.4
[Qemu-devel] [PATCH v2] usb-hid: Fix 0/0 position for Windows in tablet mode
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? Jan --8- From: Jan Kiszka jan.kis...@siemens.com For unknown reasons, Windows drivers (tested with XP and Win7) ignore usb-tablet events that move the pointer to 0/0. So always report 0/0 as 1/0. Signed-off-by: Jan Kiszka jan.kis...@siemens.com --- hw/usb-hid.c |5 + 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/hw/usb-hid.c b/hw/usb-hid.c index d711b5c..faf91c4 100644 --- a/hw/usb-hid.c +++ b/hw/usb-hid.c @@ -459,6 +459,11 @@ static void usb_pointer_event_combine(USBPointerEvent *e, int xyrel, } else { e-xdx = x1; e-ydy = y1; +/* Windows drivers do not like the 0/0 position and ignore such + * events. */ +if (!(x1 | y1)) { +x1 = 1; +} } e-dz += z1; } -- 1.7.3.4