Bug 45396 - MacBook Air 4,2: Button 3 press generated, when Button 1 is pressed and move
Summary: MacBook Air 4,2: Button 3 press generated, when Button 1 is pressed and move
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Input/synaptics (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Peter Hutterer
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 38303
Blocks:
  Show dependency treegraph
 
Reported: 2012-01-30 05:24 UTC by nico-freedesktop.org
Modified: 2012-03-13 18:47 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description nico-freedesktop.org 2012-01-30 05:24:12 UTC
when using xf86-input-synaptics 1.5.0-1 on Archlinux with the MacBook
Air 4,2, the touchpad on the macbook air creates a button3
press, if I press the touchpad [=button1] and move a finger, which is not the 
expected "button 1 press + move" behaviour.

This breaks moving around stuff when pressing the touchpad.

A workaround is to use Tap,Tap and then move, which is cumbersome.
Comment 1 Peter Hutterer 2012-01-30 13:08:32 UTC
I think this may be caused by the ClickFinger settings, try synclient ClickFinger2=0.
Comment 2 nico-freedesktop.org 2012-01-30 13:46:10 UTC
Using [21:00] brief:type% synclient ClickFinger2=0 

I get Button4/5 events when click-holding and moving the other finger:



ButtonRelease event, serial 27, synthetic NO, window 0x5800001,
    root 0xbc, subw 0x0, time 90346286, (312,284), root:(2956,304),
    state 0x900, button 4, same_screen YES

ButtonPress event, serial 27, synthetic NO, window 0x5800001,
    root 0xbc, subw 0x0, time 90346487, (312,284), root:(2956,304),
    state 0x100, button 5, same_screen YES

which is a bit better, but still not the expected behaviour.

what I am missing as well is the zones click, which I think mtrack supports: clicking left on the pad should generate button one, middle button 2 and right button 3, which I think the touchpad itself supports.

Here's the full synclient output:



[22:45] brief:type% synclient 
Parameter settings:
    LeftEdge                = 108
    RightEdge               = 1172
    TopEdge                 = 68
    BottomEdge              = 732
    FingerLow               = 25
    FingerHigh              = 30
    FingerPress             = 257
    MaxTapTime              = 180
    MaxTapMove              = 66
    MaxDoubleTapTime        = 180
    SingleTapTimeout        = 180
    ClickTime               = 100
    FastTaps                = 0
    EmulateMidButtonTime    = 75
    EmulateTwoFingerMinZ    = 283
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = 30
    HorizScrollDelta        = 30
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 0
    MinSpeed                = 1
    MaxSpeed                = 1.75
    AccelFactor             = 0.132538
    TrackstickSpeed         = 40
    EdgeMotionMinZ          = 30
    EdgeMotionMaxZ          = 160
    EdgeMotionMinSpeed      = 1
    EdgeMotionMaxSpeed      = 120
    EdgeMotionUseAlways     = 0
    TouchpadOff             = 2
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 0
    RBCornerButton          = 0
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 2
    TapButton3              = 3
    ClickFinger1            = 1
    ClickFinger2            = 0
    ClickFinger3            = 2
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 1
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    GrabEventDevice         = 1
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
[22:45] brief:type%
Comment 3 Peter Hutterer 2012-01-30 16:08:05 UTC
(In reply to comment #2)
> I get Button4/5 events when click-holding and moving the other finger:

that appears to be two-finger scrolling getting in the way (4/5 is scrolling)

> what I am missing as well is the zones click, which I think mtrack supports:
> clicking left on the pad should generate button one, middle button 2 and right
> button 3, which I think the touchpad itself supports.

we don't have that part in the driver yet, sorry. patches have appeared here and there (google for clickpad) but none have ever made it into a mergeable format.
Comment 4 nico-freedesktop.org 2012-01-30 23:25:00 UTC
You are absolutely right, synclient VertTwoFingerScroll=0 and it works.

I guess scrolling should be disabled, if the mouse button is pressed.
Would you accept such a patch?

What requirements are given for the area patch to be included?
Comment 5 Peter Hutterer 2012-01-31 04:16:36 UTC
(In reply to comment #4)
> I guess scrolling should be disabled, if the mouse button is pressed.
> Would you accept such a patch?

yes, that seems like a sensible solution, provided we can tell in the driver (not 100% sure here but as long as we have a physical button, it should work)

> What requirements are given for the area patch to be included?

someone just needs to dig the last version up (if you can find the thread on the xorg-devel list, it should also have my last comments) and then address the review comments. I think it was pretty close anyway.
Comment 6 Peter Hutterer 2012-03-13 18:47:06 UTC
side-effect of the clickpad-magic behaviours, resolved with

commit 6c457c0c61a0834361f45a073148db7b4c9be40b
Merge: defc1d0 fee18d8
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Mar 14 08:48:00 2012 +1000

    Merge branch 'clickpad-v3'


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.