summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-05-13synaptics 1.7.6xf86-input-synaptics-1.7.6synaptics-1.7-branchPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-05-05conf: add SoftButtonAreas and SecondarySoftButton areas to fdi filePeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-05-01synaptics 1.7.5.901xf86-input-synaptics-1.7.5.901Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-04-30Add support for INPUT_PROP_TOPBUTTONPADHans de Goede
Add a HasSecondaryButtons boolean config option which defaults to true for devices with the INPUT_PROP_TOPBUTTONPAD and false for all other devices. Only parse the SecondarySoftButtonAreas when this option is true, effectively disabling the top buttons when it is false. Likewise, only initialize the SecondarySoftButtonAreas property if we enable support for it. This means that it is now safe to always set a SecondarySoftButtonAreas default in 50-synaptics.conf, and that he section which was intended for use with future pnp-id matching can be dropped, as that is now all handled in the kernel. While at also remove the comment about disabling the bottom edge area, as that is now done automatically. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com> (cherry picked from commit 7bf27568417691e772e715f8fc6c30ea7ec892d6) Conflicts: src/eventcomm.c
2014-04-30If the touchpad is in TOUCHPAD_OFF mode, allow physical clicksPeter Hutterer
Enabling clicks in off mode also allows for the new Lenovo *40 series to use the top software buttons while the touchpad is disabled. This benefits those that usually disable touchpads altogether but still need the buttons for the trackstick. This changes existing behaviour, but TouchpadOff was always intended to stop erroneous events while typing. Physical button presses are hard to trigger accidentally. On the touchpads that TouchpadOff concept was originally designed for the buttons are nowhere near the keyboard and are physically separated from the touchpad anyway. On Clickpads, triggering a physical click requires more force than accidentally touching the surface. https://bugs.freedesktop.org/show_bug.cgi?id=76156 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com> (cherry picked from commit dc5474964d4ec73b5c324961026e1037bb344946)
2014-04-30Don't allow any type of movement starting in the top softbutton areaStephen Chandler Paul
Clicking in the top soft button area causes the trackpad to begin registering motion, even if the finger never leaves the top soft button area. We don't want this kind of behavior for the top soft button area, since it makes clicking and dragging items much more difficult when using a pointing stick. Signed-off-by: Stephen Chandler Paul <thatslyude@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit b40a5255fe73f7f95c8ff7145dd91605f3430119)
2014-04-30Replace is_inside_anybutton_area with current_button_areaStephen Chandler Paul
Signed-off-by: Stephen Chandler Paul <thatslyude@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 9a419ba01c53a38b4b601f4415801fca29a2b4e2)
2014-04-30Add property support for secondary (top) software buttonsPeter Hutterer
This was originally intended as a fixed xorg.conf option only (and still largely is seen as such). Secondary software button are required only on a specific series of touchpads and should be pre-configured by the system and/or the distribution. As such, the property will not be initialized if it is not set in the xorg.conf and will thus not respond to runtime changes. Exposing the property in this way gives clients a chance of detecting if a top software button area is present and thus adjust their behaviour accordingly. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com> (cherry picked from commit 66240dc329683f0141c1e11590ea2c3d8ca25788)
2014-04-30Wait for *new* coordinates on a clickpad click before reporting the clickHans de Goede
It is possible for a click to get reported before any related touch events get reported, here is the relevant part of an evemu-record session on a T440s: E: 3.985585 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 3.997419 0003 0039 -001 # EV_ABS / ABS_MT_TRACKING_ID -1 E: 3.997419 0001 014a 0000 # EV_KEY / BTN_TOUCH 0 E: 3.997419 0003 0018 0000 # EV_ABS / ABS_PRESSURE 0 E: 3.997419 0001 0145 0000 # EV_KEY / BTN_TOOL_FINGER 0 E: 3.997419 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 5.117881 0001 0110 0001 # EV_KEY / BTN_LEFT 1 E: 5.117881 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 5.133422 0003 0039 0187 # EV_ABS / ABS_MT_TRACKING_ID 187 E: 5.133422 0003 0035 3098 # EV_ABS / ABS_MT_POSITION_X 3098 E: 5.133422 0003 0036 3282 # EV_ABS / ABS_MT_POSITION_Y 3282 E: 5.133422 0003 003a 0046 # EV_ABS / ABS_MT_PRESSURE 46 E: 5.133422 0001 014a 0001 # EV_KEY / BTN_TOUCH 1 E: 5.133422 0003 0000 3102 # EV_ABS / ABS_X 3102 E: 5.133422 0003 0001 3282 # EV_ABS / ABS_Y 3282 E: 5.133422 0003 0018 0046 # EV_ABS / ABS_PRESSURE 46 E: 5.133422 0001 0145 0001 # EV_KEY / BTN_TOOL_FINGER 1 E: 5.133422 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- Notice the BTN_LEFT event all by itself! If this happens, it may lead to the following problem scenario: -touch the touchpad in its right click area -let go of the touchpad -rapidly click in the middle area, so that BTN_LEFT gets reported before the new coordinates (such as seen in the trace above, this may require some practicing with evemu-record to reproduce) -the driver registers the click as a right click because it uses the old coordinates from the cumulative coordinates to determine the click location This commit fixes this by: 1) Resetting the cumulative coordinates not only when no button is pressed, but also when there is no finger touching the touchpad, so that when we do get a touch the cumulative coordinates start at the right place 2) Delaying processing the BTN_LEFT down transition if there is no finger touching the touchpad This approach has one downside, if we wrongly identify a touchpad as a clickpad, then the left button won't work unless the user touches the touchpad while clicking the left button. If we want we can fix this by doing something like this: 1) Making update_hw_button_state return a delay; and 2) Tracking that we've delayed BTN_LEFT down transition processing; and 3) When we've delayed BTN_LEFT down transition return a small delay value; and 4) If when we're called again we still don't have a finger down, just treat the click as a BTN_LEFT But this is not worth the trouble IMHO, the proper thing to do in this scenario is to fix the mis-identification of the touchpad as a clickpad. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit bbe4c56c4998a90b478581a4d93717251d8e05be)
2014-04-30On button down update cumulative to current x and y, instead of previousHans de Goede
When a button click and new coordinates get reported in one go we sync the cumulative coordinates to the old x and y, rather then the newly reported ones. This keeping of the old coordinates causes the following issue: -touch the touchpad in its right click area -let go of the touchpad -rapidly click in the left click area (or middle area), so that the new location and the click get reported in one syn (may require some practicing with evemu-record to reproduce) -the driver registers the click as a right click because it uses the old coordinates from the cumulative coordinates to determine the click location Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 743c45b9cfd057d00c37dab1cfca4b6202fb2642)
2014-04-30Ignore motion the first X ms after a clickpad clickHans de Goede
This fixes my #1 anoyance with clickpads, where 2 out of 3 clicks turn into a click + drag unless I hold my finger really really still. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Replaced property with a hardcoded 100ms. This is not something that we should expose as property, we should find a delay that works best and live with it. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 71652fe1f0800b081ba5602e9edda22a8d8d628e)
2014-04-30Don't report motion inside soft-button areasHans de Goede
Unless the motion has started outside the soft-button area. Note that we must start reporting motions regardless of whether we think we're in the button area or not as soon as we've switched to using cumulative coordinates, since then the coordinates are no longer absolute. This fixes the reporting of unintended motion just before a click in a soft button area which sometimes causes mis-clicks. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 3adaf4623845dce54129b6474f4f8f2966f9bc47) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Conflicts: src/synaptics.c
2014-04-30Get rid of old_hw_stateHans de Goede
We only use it to store button state which we already have in priv->lastButtons. While at it also properly indent the code block checking the various soft button areas. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit effeee86c1c286cd09ab750efc4932790dd560dd)
2014-04-30Add an enum for the different soft_button_areasHans de Goede
While at it also move the enum for the soft button edges out of is_inside_button_area() so that it can be used elsewhere too. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 840670508e0150ae11ae744c676253c7fba332dc)
2014-04-30Add secondary (top) software buttons areaBenjamin Tissoires
New generation of laptops with trackstick do not have physical buttons associated with the trackstick, but instead rely on software buttons at the top of the clickpad. Adding a secondary software button area for this purpose. As we're likely detecting the devices that need it based on udev tags and MatchTag configuration items, this area doesn't need to be exposed through properties. So static configuration is fine. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> [couple of man-page additions and rewrites] Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 402cc872570b58b8420e7973d0706f3b2a2aaf91)
2014-04-30Allow using the entire touchpad for motions started inside the active areaHans de Goede
synaptics offers an option to make parts of the touchpad insensitive. This is ie useful to do palm avoidance rather then palm detection (which may be unreliable) by disabling an area of 15% on the right and left side of the touchpad. Currently a motion which has started inside the active area, stops as soon as it moves outside of the active area. If a motion started inside the active area and thus has already generated some move events, this makes no sense. If the user moves outside of the active area in this case, this is very likely because the user wants to continue the motion. This commit allows such motions to continue normally. I would like to thank Juerd Waalboer for the basic idea, some coding and lots of testing for this fix. Cc: Juerd Waalboer <juerd@tnx.nl> Reported-by: Juerd Waalboer <juerd@tnx.nl> Tested-by: Juerd Waalboer <juerd@tnx.nl> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 945acfc261707be78cbc5438c22b061e20076004)
2014-04-30Always count tripletap + click as 3 fingerclick on pads with < 3 touchesHans de Goede
When trying to do a 3 fingerclick on a touchpad which only tracks 2 touches, this may register as a 3 or 2 fingerclick depending on the order in which the touchpad detects the fingers. If the 2 outer fingers of the 3 get seen first, then the 2 touches will be too far apart for the heuristic to see them as being close together, and the click gets counted as a 2 finger click. A user will likely never do a 2 finger click with a 3th finger resting somewhere else on the pad, where-as the above misdetection of the clicks is a real issue, so simply always count a click with trippletap set as a 3 finger click on pads which track less then 3 touches. https://bugzilla.redhat.com/show_bug.cgi?id=1086218 Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit a6f0f4c9a5bcb0e25343dd4c59d4cc47cc5e8006)
2014-04-30On clickpads with two touchpoints, try to detect clickfinger 3 actionsPeter Hutterer
Some touchpads provide BTN_TOOL_TRIPLETAP but do not track more than two touchpoints. For those, try to detect clickfinger3 actions as best as we can. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 51b6bf3c1083638527b18696c2b682fd78c97070)
2014-04-30man: add some missing quotesPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 41afac2abf12dd74a171f726b57014f7fb266957)
2014-04-30Fix product ID cutoff for MODEL_APPLETOUCH/MODEL_UNIBODY_MACBOOKClinton Sprain
Some Macbooks are being tagged as MODEL_UNIBODY_MACBOOKs when they should not be. This causes the default sensitivity to be very low for them, making the touchpad almost unusable. This change puts those devices into the correct bucket again. Signed-off-by: Clinton Sprain <clintonsprain@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit efa424b5c9c084c1c1136a68329709c7dc9ddfda)
2014-04-29synaptics 1.7.5xf86-input-synaptics-1.7.5Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-20Avoid erroneously handling two touchpoints in the same slotPeter Hutterer
If a slot's ABS_MT_TRACKING_ID event was received during SYN_DROPPED, the driver isn't aware that a touchpoint has started or ended in that slot. When the next ABS_MT_TRACKING_ID event arrives, the driver would unconditionally close or open a new touchpoint. This could lead to two or more touchpoints being opened in the same slot, the first of which is never terminated. Or it could lead to a touchpoint being terminated that was never opened. The event sequences that trigger this are: ABS_MT_TRACKING_ID 83 ABS_MT_TRACKING_ID -1 SYN_DROPPED // new touchpoint started here ABS_MT_TRACKING_ID -1 and ABS_MT_TRACKING_ID 83 SYN_DROPPED // touchpoint ended here ABS_MT_TRACKING_ID 84 ABS_MT_TRACKING_ID -1 We don't properly handle SYN_DROPPED, but we can avoid this by only starting a new touchpoint when we transition between -1 and a valid tracking ID. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-20eventcomm: drop assumption of non-zero slot offsetPeter Hutterer
The kernel guarantees this is always 0 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-20eventcomm: drop calculation of slot offsetPeter Hutterer
The kernel guarantees slots start at 0 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> (cherry picked from commit 5b7e1726369d4973859996f225bec743c2e21288)
2014-03-12synaptics 1.7.4xf86-input-synaptics-1.7.4Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-02-24Close device if DeviceOnHook failsKeith Packard
Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 22fe8bdc6668e78853768c62f4d1331114c7eca0)
2014-02-21man: setting scroll deltas to 0 doesn't work (#75074)Peter Hutterer
6d47d33 disallows a zero value for horizontal/vertical scroll deltas but the man page wasn't updated. We've added separate toggles to enable/disable scrolling a few years ago, setting the distance to 0 is not recommended. X.Org Bug 75074 <http://bugs.freedesktop.org/show_bug.cgi?id=75074> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 2ea76fad6545a712713de1a09965158805e83c55)
2014-02-21Revert "Drop circular pad support"Peter Hutterer
This reverts commit 3b02e7fd81da4b100fb9ac32378f6d50f54cf0e2. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Conflicts: man/synaptics.man src/synaptics.c Acked-by: Daniel Stone <daniel@fooishbar.org> (cherry picked from commit 4f543ce1d6ae9ca11086a3009d149505590584a8)
2014-02-21Revert "Purge scrollbuttons (repeat)"Peter Hutterer
This reverts commit 0903d99ada1755f11a2a5cbf89a345de896e18ec. Scroll buttons are still present in some modern devices, e.g. the Fujitsu Lifebook E782 and others in the series. Conflicts: include/synaptics.h man/synaptics.man src/synaptics.c (cherry picked from commit e0069c154440305ece6def92a9813a9f8004b2fb)
2014-01-13synaptics 1.7.3xf86-input-synaptics-1.7.3Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-01-13Fix ABI detection for in-driver scalingPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 49fe70e99d1b0932ab915824c78f952a0fdb3ee7)
2013-12-09synaptics 1.7.2xf86-input-synaptics-1.7.2Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-12-09eventcomm: ungrab the device on DeviceOffPeter Hutterer
For symmetry, the kernel should ungrab when we close the fd. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> [modified for the 1.7 branch which isn't using libevdev yet] (cherry picked from commit 5d391e352f4e502ada6444a7ce860683e3480fbf)
2013-12-09Add missing property handler for the pressure motion factorPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 29318c1d94510cfb6d5d712e912af111f99edb42)
2013-12-05Disable driver scaling for input ABI 19.2Peter Hutterer
For absolute devices in relative mode, i.e. touchpads, the server now takes device resolution into account. Doing so means that the driver mustn't scale, so we deactivate those bits in the driver. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 0fb59b3487d57523a03f078a2061e2ea0cacbc7c)
2013-05-13synaptics 1.7.1xf86-input-synaptics-1.7.1Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-05-09Plug memory leak for priv->touch_axesPeter Hutterer
Allocated in event_query_touch, was never freed. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
2013-05-09Plug memory leak for option_stringPeter Hutterer
xf86SetStrOption() returns a strdup'd string that must be freed after use. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
2013-04-26Fix stack smash in clickpad_guess_clickfingers()Peter Hutterer
Apple Magic Trackpad can report 16 slots. In clickpad_guess_clickfingers() the array allocated on the stack contains only 10 slots. As (.num_mt_mask == .num_slots), the function writes out of the bounds of close_point. Use a size 32 bitmask instead and warn if we ever get past 32 touchpoints. This fixes: https://bugzilla.redhat.com/show_bug.cgi?id=952221 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reported-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
2013-04-05Allow soft button areas to overlap on the edgePeter Hutterer
For percent-based configuration in the form of middle button 33%-66%, right button 66%-0 we'd get an error because of the one device unit overlap. This was neither documented nor useful, because leaving a 1% gap leaves an actual gap between the buttons. Allow for an overlap of one device unit on the edge of the buttons. What's picked in that case depends on the implementation of is_inside_softbutton_area but since one device unit is so small, it doesn't matter. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-05man: clarify that 0, not 0% disables the softbutton areaPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-05Improve readability of the soft button areasPeter Hutterer
Replace the hardcoded indices with enums that are somewhat expressive. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-04-02synaptics 1.7.0xf86-input-synaptics-1.7.0Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-26synclient: use a parameter that actually exists in the man page examplePeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-26synclient: drop XF86Config-4 from man pagePeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-26syndaemon: list -? in help/man pagePeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-26synclient: support -? for usagePeter Hutterer
man page and help claim we support this, so let's do so Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-26synclient: remove 'm' and 'h' from getopt and man pagePeter Hutterer
Removed as of 83d88b253139f9c92d619e7ad7c3981138893536 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-26tools: drop -s listing in synclient's help output. SHM is gone.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-25eventcomm: print axis resolution to the logPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>