Re: [Linuxwacom-devel] [PATCH] Allow PAD only interface without setting up EV_ABS and/or EV_X/Y
On Tue, Nov 18, 2014 at 04:42:22PM -0800, Ping Cheng wrote: Wacom kernel driver has been merged to HID subsystem. As a bonus, we also allow PAD to report its data on its own interface. To declare the exact event types, we should not set EV_ABS or EV_X/Y for PADs on most tablets. However, xf86-input-wacom is not designed to handle this case. This patch makes future PAD-only, or even expresskey-only, tablets work properly. Signed-off-by: Ping Cheng pi...@wacom.com --- src/wcmUSB.c | 13 +++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/wcmUSB.c b/src/wcmUSB.c index 638ffb8..bac3c66 100644 --- a/src/wcmUSB.c +++ b/src/wcmUSB.c @@ -546,6 +546,11 @@ int usbWcmGetRanges(InputInfoPtr pInfo) if (!ISBITSET(ev,EV_ABS)) { + /* may be an expresskey only interface */ + if (ISBITSET(common-wcmKeys, BTN_FORWARD) || + ISBITSET(common-wcmKeys, BTN_0)) + return Success; + xf86Msg(X_ERROR, %s: no abs bits.\n, pInfo-name); return !Success; } @@ -560,6 +565,11 @@ int usbWcmGetRanges(InputInfoPtr pInfo) /* max x */ if (ioctl(pInfo-fd, EVIOCGABS(ABS_X), absinfo) 0) { + /* may be a PAD only interface */ + if (ISBITSET(common-wcmKeys, BTN_FORWARD) || + ISBITSET(common-wcmKeys, BTN_0)) + return Success; + xf86Msg(X_ERROR, %s: unable to ioctl xmax value.\n, pInfo-name); return !Success; } Reviewed-by: Peter Hutterer peter.hutte...@who-t.net for this bit @@ -755,8 +765,7 @@ int usbWcmGetRanges(InputInfoPtr pInfo) if (ioctl(pInfo-fd, EVIOCGBIT(EV_SW, sizeof(sw)), sw) 0) { - xf86Msg(X_ERROR, %s: usbProbeKeys unable to ioctl - sw bits.\n, pInfo-name); + xf86Msg(X_ERROR, %s: unable to ioctl sw bits.\n, pInfo-name); return 0; } else if (ISBITSET(sw, SW_MUTE_DEVICE)) Reviewed-by: Peter Hutterer peter.hutte...@who-t.net, if it's split to a separate patch. fwiw, in the future we should use __func__ instead of harcoding function names. Cheers, Peter -- Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk ___ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
Re: [Linuxwacom-devel] [PATCH] Allow PAD only interface without setting up EV_ABS and/or EV_X/Y
On Thursday, November 20, 2014, Peter Hutterer peter.hutte...@who-t.net wrote: On Tue, Nov 18, 2014 at 04:42:22PM -0800, Ping Cheng wrote: Wacom kernel driver has been merged to HID subsystem. As a bonus, we also allow PAD to report its data on its own interface. To declare the exact event types, we should not set EV_ABS or EV_X/Y for PADs on most tablets. However, xf86-input-wacom is not designed to handle this case. This patch makes future PAD-only, or even expresskey-only, tablets work properly. Signed-off-by: Ping Cheng pi...@wacom.com javascript:; --- src/wcmUSB.c | 13 +++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/wcmUSB.c b/src/wcmUSB.c index 638ffb8..bac3c66 100644 --- a/src/wcmUSB.c +++ b/src/wcmUSB.c @@ -546,6 +546,11 @@ int usbWcmGetRanges(InputInfoPtr pInfo) if (!ISBITSET(ev,EV_ABS)) { + /* may be an expresskey only interface */ + if (ISBITSET(common-wcmKeys, BTN_FORWARD) || + ISBITSET(common-wcmKeys, BTN_0)) + return Success; + xf86Msg(X_ERROR, %s: no abs bits.\n, pInfo-name); return !Success; } @@ -560,6 +565,11 @@ int usbWcmGetRanges(InputInfoPtr pInfo) /* max x */ if (ioctl(pInfo-fd, EVIOCGABS(ABS_X), absinfo) 0) { + /* may be a PAD only interface */ + if (ISBITSET(common-wcmKeys, BTN_FORWARD) || + ISBITSET(common-wcmKeys, BTN_0)) + return Success; + xf86Msg(X_ERROR, %s: unable to ioctl xmax value.\n, pInfo-name); return !Success; } Reviewed-by: Peter Hutterer peter.hutte...@who-t.net javascript:; for this bit @@ -755,8 +765,7 @@ int usbWcmGetRanges(InputInfoPtr pInfo) if (ioctl(pInfo-fd, EVIOCGBIT(EV_SW, sizeof(sw)), sw) 0) { - xf86Msg(X_ERROR, %s: usbProbeKeys unable to ioctl - sw bits.\n, pInfo-name); + xf86Msg(X_ERROR, %s: unable to ioctl sw bits.\n, pInfo-name); return 0; } else if (ISBITSET(sw, SW_MUTE_DEVICE)) Reviewed-by: Peter Hutterer peter.hutte...@who-t.net javascript:;, if it's split to a separate patch. Thank you for the review. I'll split the patch and post them here. fwiw, in the future we should use __func__ instead of harcoding function names. When does your future start, from this patch or sometime later? ;-) Ping -- Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk___ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
Re: [Linuxwacom-devel] [PATCH] Allow PAD only interface without setting up EV_ABS and/or EV_X/Y
On Thu, Nov 20, 2014 at 10:34:24PM -0800, Ping Cheng wrote: On Thursday, November 20, 2014, Peter Hutterer peter.hutte...@who-t.net wrote: On Tue, Nov 18, 2014 at 04:42:22PM -0800, Ping Cheng wrote: Wacom kernel driver has been merged to HID subsystem. As a bonus, we also allow PAD to report its data on its own interface. To declare the exact event types, we should not set EV_ABS or EV_X/Y for PADs on most tablets. However, xf86-input-wacom is not designed to handle this case. This patch makes future PAD-only, or even expresskey-only, tablets work properly. Signed-off-by: Ping Cheng pi...@wacom.com javascript:; --- src/wcmUSB.c | 13 +++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/wcmUSB.c b/src/wcmUSB.c index 638ffb8..bac3c66 100644 --- a/src/wcmUSB.c +++ b/src/wcmUSB.c @@ -546,6 +546,11 @@ int usbWcmGetRanges(InputInfoPtr pInfo) if (!ISBITSET(ev,EV_ABS)) { + /* may be an expresskey only interface */ + if (ISBITSET(common-wcmKeys, BTN_FORWARD) || + ISBITSET(common-wcmKeys, BTN_0)) + return Success; + xf86Msg(X_ERROR, %s: no abs bits.\n, pInfo-name); return !Success; } @@ -560,6 +565,11 @@ int usbWcmGetRanges(InputInfoPtr pInfo) /* max x */ if (ioctl(pInfo-fd, EVIOCGABS(ABS_X), absinfo) 0) { + /* may be a PAD only interface */ + if (ISBITSET(common-wcmKeys, BTN_FORWARD) || + ISBITSET(common-wcmKeys, BTN_0)) + return Success; + xf86Msg(X_ERROR, %s: unable to ioctl xmax value.\n, pInfo-name); return !Success; } Reviewed-by: Peter Hutterer peter.hutte...@who-t.net javascript:; for this bit @@ -755,8 +765,7 @@ int usbWcmGetRanges(InputInfoPtr pInfo) if (ioctl(pInfo-fd, EVIOCGBIT(EV_SW, sizeof(sw)), sw) 0) { - xf86Msg(X_ERROR, %s: usbProbeKeys unable to ioctl - sw bits.\n, pInfo-name); + xf86Msg(X_ERROR, %s: unable to ioctl sw bits.\n, pInfo-name); return 0; } else if (ISBITSET(sw, SW_MUTE_DEVICE)) Reviewed-by: Peter Hutterer peter.hutte...@who-t.net javascript:;, if it's split to a separate patch. Thank you for the review. I'll split the patch and post them here. just push them directly, no need to re-post them IMO. fwiw, in the future we should use __func__ instead of harcoding function names. When does your future start, from this patch or sometime later? heh, I don't think it's necessary to add the function name here. but I noticed that in a couple of places in the past (not sure how many of those already got cleaned up) Cheers, Peter -- Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751iu=/4140/ostg.clktrk ___ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel