On Tue, Mar 26, 2013 at 11:42:51AM -0700, Jason Gerecke wrote: > On Mon, Mar 25, 2013 at 6:39 PM, Peter Hutterer > <peter.hutte...@who-t.net>wrote: > > > Use the bigger of ABS_X/ABS_Y fuzz as the default value for suppress to > > avoid erroneous movements. The kernel-announced fuzz for I4 tablets is 4, > > so > > we get plenty of erroneous movement, specificially on the puck cursor. > > > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > > --- > > man/wacom.man | 8 +++++--- > > src/wcmUSB.c | 6 ++++++ > > 2 files changed, 11 insertions(+), 3 deletions(-) > > > > diff --git a/man/wacom.man b/man/wacom.man > > index 98dec37..622bf73 100644 > > --- a/man/wacom.man > > +++ b/man/wacom.man > > @@ -88,9 +88,11 @@ This option is mandatory. > > sets the position increment under which not to transmit coordinates. > > This entry must be specified only in the first Wacom subsection if you > > have > > multiple devices for one tablet. If you don't specify this entry, the > > default > > -value, which is 2, will be used. To disable suppression, the entry > > should be > > -specified as 0. When suppress is defined, an event will be sent only > > when at > > -least one of the following conditions is met: > > +value will be used. This default value is retrieved from the kernel, or 2 > > if > > +the kernel does not provide a fuzz value. > > +To disable suppression, the entry should be specified as 0. When > > +suppress is defined, an event will be sent only when at least one of the > > +following conditions is met: > > > > the change between the current X coordinate and the previous one > > is > > greater than suppress; > > diff --git a/src/wcmUSB.c b/src/wcmUSB.c > > index 980dac3..8ee0078 100644 > > --- a/src/wcmUSB.c > > +++ b/src/wcmUSB.c > > @@ -534,6 +534,9 @@ int usbWcmGetRanges(InputInfoPtr pInfo) > > #endif > > } > > > > + if (absinfo.fuzz > 0) > > + common->wcmSuppress = absinfo.fuzz; > > + > > /* max y */ > > if (ioctl(pInfo->fd, EVIOCGABS(ABS_Y), &absinfo) < 0) > > { > > @@ -567,6 +570,9 @@ int usbWcmGetRanges(InputInfoPtr pInfo) > > #endif > > } > > > > + if (absinfo.fuzz > 0) > > + common->wcmSuppress = max(absinfo.fuzz, > > common->wcmSuppress); > > + > > /* max finger strip X for tablets with Expresskeys > > * or physical X for touch devices in hundredths of a mm */ > > if (ISBITSET(abs, ABS_RX) && > > -- > > 1.8.1.4 > > > > > NAK. Three issues: > > 1) Correcting a noisy axis should be done by adjusting the in-kernel fuzz > value. Remember that the X driver isn't the only consumer of our data.
But what is considered noise depends on the consumer. e.g. X may define noise differently than anything else. > 2) Suppress is a a sledgehammer and acts on every axis equally. Having the > suppress auto-detected to 4, for example, means that the touchring will > becomes quite insensitive to fine motion. If you must have the X driver > handle things, suppress should be rewritten to not be quite so global. No arguments here. I think we can extend Suppress to take multiple values (per-axis, if need be) relatively easily. The question is though: what was Suppress supposed to do originally? was it aimed for x/y axis noise only or general axis noise? Cheers, Peter > 3) If suppress were rewritten to be more limited in scope, the proper > default value should be fuzz/2 (see input_defuzz_abs_event in > drivers/input/input.c) ------------------------------------------------------------------------------ Own the Future-Intel® Level Up Game Demo Contest 2013 Rise to greatness in Intel's independent game demo contest. Compete for recognition, cash, and the chance to get your game on Steam. $5K grand prize plus 10 genre and skill prizes. Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel