Hi Ping, I'm trying to catch up with you in understanding... You mentioned elsewhere that HW is reporting physical size in terms of 0.001 of a cm. Assuming thats true (what a crazy unit!), then the HID spec shows how to compute resolution like this:
resolution in units per cm = logical_size / (physical_size * 10-3) Would you mind changing your math below to be closer to HID spec? I think it will help readers understand faster if they've read HID spec first. So I mean change like this: resolution in units per meter = logical_size / (physical_size * 0.1) It would be cool if HID turns out to be reporting in terms of mm (10^-1 or 0.1 of cm). Then it reduces to: resolution in units per meter = logical_size / physical_size I have one more comment below. On Mon, Jan 24, 2011 at 1:39 AM, Ping Cheng <[email protected]> wrote: > resolution = logical size / physical size > > The touch physical size we get from the kernel is in thousandth cm. > The resolution unit we need to report to XInput is in point/m. So, > > touch resolution = logical size * 10 / physical size > > Signed-off-by: Ping Cheng <[email protected]> > --- > src/wcmUSB.c | 24 ++++++++++-------------- > 1 files changed, 10 insertions(+), 14 deletions(-) > > diff --git a/src/wcmUSB.c b/src/wcmUSB.c > index cfaf920..d8e8312 100644 > --- a/src/wcmUSB.c > +++ b/src/wcmUSB.c > @@ -483,33 +483,29 @@ int usbWcmGetRanges(InputInfoPtr pInfo) > common->wcmMaxTouchY = absinfo.maximum; > > /* max finger strip X for tablets with Expresskeys > - * or touch physical X for TabletPCs with touch */ > + * or physical X for touch device in thousandth cm */ > if (ioctl(pInfo->fd, EVIOCGABS(ABS_RX), &absinfo) == 0) > { > - if (is_touch) > - common->wcmTouchResolX = absinfo.maximum; > + if (is_touch && !common->wcmTouchResolX) > + common->wcmTouchResolX = > + (int)(((double)common->wcmMaxTouchX * 10.0 > + / (double)absinfo.maximum) + 0.5); This gives preference to the lookup table instead of hardware. Maybe we should give preference to HW reported value (and fall back to table)? + if (is_touch && absinfo.maximum) It doesn't really matter much since this is code that will not be used with any new HW. Chris > else > common->wcmMaxStripX = absinfo.maximum; > } > > /* max finger strip Y for tablets with Expresskeys > - * or touch physical Y for TabletPCs with touch */ > + * or physical Y for touch device in thousandth cm */ > if (ioctl(pInfo->fd, EVIOCGABS(ABS_RY), &absinfo) == 0) > { > - if (is_touch) > - common->wcmTouchResolY = absinfo.maximum; > + if (is_touch && !common->wcmTouchResolY) > + common->wcmTouchResolY = > + (int)(((double)common->wcmMaxTouchY * 10.0 > + / (double)absinfo.maximum) + 0.5); > else > common->wcmMaxStripY = absinfo.maximum; > } > > - if (is_touch && common->wcmTouchResolX && common->wcmMaxTouchX) > - { > - common->wcmTouchResolX = > (int)(((double)common->wcmTouchResolX) > - / ((double)common->wcmMaxTouchX) + 0.5); > - common->wcmTouchResolY = > (int)(((double)common->wcmTouchResolY) > - / ((double)common->wcmMaxTouchY) + 0.5); > - } > - > /* max z cannot be configured */ > if (ioctl(pInfo->fd, EVIOCGABS(ABS_PRESSURE), &absinfo) == 0) > common->wcmMaxZ = absinfo.maximum; > -- > 1.7.3.4 > > > ------------------------------------------------------------------------------ > Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)! > Finally, a world-class log management solution at an even better price-free! > Download using promo code Free_Logger_4_Dev2Dev. Offer expires > February 28th, so secure your free ArcSight Logger TODAY! > http://p.sf.net/sfu/arcsight-sfd2d > _______________________________________________ > Linuxwacom-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel > ------------------------------------------------------------------------------ Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)! Finally, a world-class log management solution at an even better price-free! Download using promo code Free_Logger_4_Dev2Dev. Offer expires February 28th, so secure your free ArcSight Logger TODAY! http://p.sf.net/sfu/arcsight-sfd2d _______________________________________________ Linuxwacom-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
