Peter,<div><br></div><div>Thank you.  This is all new to me and I appreciate the guidance. I've not committed anything new since my last commit where I bypassed the click event entirely in favor of a pressure threshold. That's worked better than before, but double clicks seem problematic.  I'll only bother submitting a patch if I feel like I've made good progress, for now I'm hacking at it and pushing to github for visibility should anyone be interested.</div>
<div><br></div><div><br></div><div>cheers</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 29, 2012 at 1:49 AM, Peter Hutterer <span dir="ltr"><<a href="mailto:peter.hutterer@who-t.net" target="_blank">peter.hutterer@who-t.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Tue, Nov 13, 2012 at 09:15:05PM -0500, Aaron Westendorf wrote:<br>
> "Bending" and "flex" are simply the best description I have; the<br>
> Series 9 is unibody and flex is practically non-existent. For all I<br>
> know, it's a voltage potential as a result of movement of my hand<br>
> along any part of the chassis. There is no single way to cause the<br>
> kernel to send spurious clicks. Typing and any touching along the palm<br>
> rest are capable of causing it, as well as picking it up, changing the<br>
> screen angle, etc.<br>
><br>
> The patch did not fully solve the problem though. Over the weekend I<br>
> found that the bug continued to cause trouble as I used the laptop<br>
> more, and so I introduced "ClickHigh", similar to "FingerHigh" and<br>
> operating solely on clickpads to insist that a button event only be<br>
> registered if past a certain pressure (default of 0 uses click event<br>
> as-is). This filtered out cases where I was scrolling or moving the<br>
> mouse pointer and the kernel sent a click, causing scroll to stop,<br>
> text to be highlighted, and so on.  My problems have largely gone away<br>
> though I'm still experimenting with it, trying to find the cases where<br>
> it does not perform as desired (and there are a few). I have found<br>
> that my clicks aren't always registered; I suppose that this is<br>
> because the button event is sent before the pressure threshold is<br>
> reached but seeing as it's configurable I can't yet say if it's my<br>
> implementation or the setting. In order to skip all clicks and use<br>
> only pressure to determine a click I'd also need to add a ClickLow<br>
> setting. I'm unsure if this is a wise approach.<br>
><br>
> It's really important to me to see this fixed. I could maintain my own<br>
> patches but I can't possibly be the only one to encounter this. The<br>
> root bug seems to be in the kernel, I did not notice the problem when<br>
> I first installed (K)ubuntu 12.04 and it got progressively worse in<br>
> the past several weeks (perhaps lending credence to it being a<br>
> grounding problem in the hardware). Working on the kernel though is<br>
> outside the scope of what I have resources for at this time.<br>
><br>
> The loss of the shm functionality makes testing the driver a lot<br>
> harder. I can switch VTs and see kernel events, but the shm feature<br>
> allowed me to capture output as I used the desktop, and then review<br>
> what happened after I observed a bug.<br>
<br>
<br>
</div></div>:: whot@yabbi:~> cat /etc/X11/xorg.conf.d/99-synaptics-dontgrab.conf<br>
Section "InputClass"<br>
        Identifier "Don't grab synaptics"<br>
        MatchDriver "synaptics"<br>
        Option "GrabEventDevice" "off"<br>
EndSection<br>
<br>
then evtest will work at any time.<br>
<div class="im"><br>
> The pull request model of github seems better for this kind of hacking<br>
> and I don't want to spam the list with lots of little changes, so<br>
> please let me know how best to keep this discussion going.<br>
> <a href="https://github.com/awestendorf/xf86-input-synaptics/pull/1" target="_blank">https://github.com/awestendorf/xf86-input-synaptics/pull/1</a><br>
<br>
</div>the pull request model is horrible to actually review changes since one has<br>
to copy/paste hunks out of context, etc. Please do send your patches to the<br>
list if you have any that are useful.<br>
<br>
what will help in this case is if you can get a device recording with evemu<br>
of such a spurious click event so I get a clearer picture.<br>
<br>
Cheers,<br>
   Peter<br>
<div><div class="h5"><br>
><br>
> -Aaron<br>
><br>
> On Tue, Nov 13, 2012 at 2:34 PM, Chase Douglas <<a href="mailto:chase.douglas@ubuntu.com">chase.douglas@ubuntu.com</a>> wrote:<br>
> > On Fri, Nov 9, 2012 at 11:43 AM, Aaron Westendorf <<a href="mailto:aaron@agoragames.com">aaron@agoragames.com</a>><br>
> > wrote:<br>
> >><br>
> >> ---<br>
> >>  src/eventcomm.c |   20 +++++++++++++++++++-<br>
> >>  1 file changed, 19 insertions(+), 1 deletion(-)<br>
> >><br>
> >> diff --git a/src/eventcomm.c b/src/eventcomm.c<br>
> >> index b1d5460..09e8a50 100644<br>
> >> --- a/src/eventcomm.c<br>
> >> +++ b/src/eventcomm.c<br>
> >> @@ -652,7 +652,25 @@ EventReadHwState(InputInfoPtr pInfo,<br>
> >>              v = (ev.value ? TRUE : FALSE);<br>
> >>              switch (ev.code) {<br>
> >>              case BTN_LEFT:<br>
> >> -                hw->left = v;<br>
> >> +                /**<br>
> >> +                 * Filter spurious events from the kernel in cases where<br>
> >> +                 * chassis flex causes it to send a button press event.<br>
> >> +                 * Ignore clickpad events if nothing was pressed or using<br>
> >> +                 * !=1 finger with click pressure. There is still a case<br>
> >> +                 * where resting a finger on the pad and a palm press on<br>
> >> the<br>
> >> +                 * keyboard rest will trigger an event and that will pass<br>
> >> +                 * pass through this filter. TBD on best course of action<br>
> >> to<br>
> >> +                 * filter that out, because we want to recognize press<br>
> >> events<br>
> >> +                 * to allow mouse movement, but not register as a click.<br>
> >> The<br>
> >> +                 * old FingerPress option seems like the right choice but<br>
> >> +                 * it's been deprecated. Filtering that out could require<br>
> >> +                 * complicated heuristics, so for now do a reasonable job<br>
> >> +                 * by insisting that the pressure be at least the value<br>
> >> +                 * of FingerHigh.<br>
> >> +                 */<br>
> >> +                if (para->clickpad!=1 || (hw->numFingers==1 && hw->z >=<br>
> >> para->finger_high)) {<br>
> >> +                  hw->left = v;<br>
> >> +                }<br>
> >>                  break;<br>
> >>              case BTN_RIGHT:<br>
> >>                  hw->right = v;<br>
> ><br>
> ><br>
> > It's not 100% clear to me the problem you are facing, but I think I get it.<br>
> > I'll try to restate to verify:<br>
> ><br>
> > You are having issues where a button press is occurring when the user isn't<br>
> > actually using the trackpad. You see the issue in your hardware by simply<br>
> > bending the machine in a specific way. You hope that by filtering out button<br>
> > presses when no "touch" is active will resolve the issue.<br>
> ><br>
> > If that's all correct, then this patch looks like a good approach. However,<br>
> > there is a problem. I own a Dell Mini 1012 netbook with a clickpad. It is<br>
> > trivially easy, and occurs often in normal use, to depress the clickpad<br>
> > button without a "touch" being seen. In fact, I believe one of my original<br>
> > clickpad patches had similar filtering to what you describe, but people<br>
> > complained that their button presses weren't working.<br>
> ><br>
> > My first inclination is to say that we can't always fix hardware defects in<br>
> > software. If bending your laptop causes a spurious click, then stop bending<br>
> > it :). If you and others feel that this must be fixed, then I think we will<br>
> > either need a blacklist of machines that should *not* be filtered (including<br>
> > the Dell netbook), or we will need a whitelist of machines that *should* be<br>
> > filtered (including your laptop model).<br>
> ><br>
> > -- Chase<br>
</div></div>> _______________________________________________<br>
> <a href="mailto:xorg-devel@lists.x.org">xorg-devel@lists.x.org</a>: X.Org development<br>
> Archives: <a href="http://lists.x.org/archives/xorg-devel" target="_blank">http://lists.x.org/archives/xorg-devel</a><br>
> Info: <a href="http://lists.x.org/mailman/listinfo/xorg-devel" target="_blank">http://lists.x.org/mailman/listinfo/xorg-devel</a><br>
><br>
</blockquote></div><br></div>