Commit Graph

1438 Commits

Author SHA1 Message Date
Peter Hutterer
4c0cf475c8 synaptics 1.7.8
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.8
2015-01-08 09:17:49 +10:00
Peter Hutterer
709e967318 Revert "eventcomm: add missing axis labels to avoid array overrun"
Bad backport, had a superfluous break which made it half-work on some devices.
On Apple touchpads, it crashes outright, but the real fix is a bit more
involved.

This reverts commit fbf8df1669.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-01-05 09:47:39 +10:00
Peter Hutterer
d3331b5802 synaptics 1.7.7
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.7
2014-12-22 08:54:39 +10:00
Peter Hutterer
c3c68e3cbb Limit the movement to 20 mm per event
Touchpads are limited by a fixed sampling rate (usually 80Hz). Some finger
changes may happen too fast for this sampling rate, resulting in two distinct
event sequences:
* finger 1 up and finger 2 down in the same EV_SYN frame. Synaptics sees one
  finger down before and after and the changed coordinates
* finger 1 up and finger 2 down _between_ two EV_SYN frames. Synaptics sees one
  touchpoint move from f1 position to f2 position.

That move causes a large cursor jump. The former could be solved (with
difficulty) by adding fake EV_SYN handling after releasing touchpoints but
that won't fix the latter case.

So as a solution for now limit the finger movement to 20mm per event.
Tests on a T440 and an x220 showed that this is just above what a reasonable
finger movement would trigger. If a movement is greater than that limit, reset
it to 0/0.

On devices without resolution, use 0.25 of the touchpad's diagonal instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 41b2312c00)
2014-12-22 08:53:06 +10:00
Peter Hutterer
c3df19df67 Prohibit negative or zero x/y resolutions
Default resolution is 1, don't allow setting 0 to avoid divisions by 0 or
just general weirdness.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 049611bd7f)
2014-12-22 08:52:57 +10:00
Peter Hutterer
ffd51448fb When resetting, reset the open slots to -1
open_slots holds the slot index, resetting it to 0 is a bad idea. And make
sure that we do reset after DEVICE_INIT. We already do so on DEVICE_CLOSE, but
after the first DEVICE_ON the data could still be random.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit afbbcfa10e)
2014-12-22 08:52:52 +10:00
Peter Hutterer
fbf8df1669 eventcomm: add missing axis labels to avoid array overrun
And warn when we run out of labels.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit d239f831f1)

Conflicts:
	src/eventcomm.c
2014-12-22 08:51:12 +10:00
Peter Hutterer
7d958088a3 eventcomm: ensure we're on the same clock as the server
Default on evdev devices is CLOCK_REALTIME. If that clock falls behind the
server's CLOCK_MONOTONIC, motion after a clickpad click may be delayed by the
difference in the clocks.

In detail:
When the timer func is triggered, GetTimeInMillis() which is CLOCK_MONOTONIC,
is stored as hwState->millis. The eventcomm backend uses struct
input_event time (CLOCK_REALTIME).

When we read events from the device, if the evdev time is less than the server
time, the fix for (#48777) sets the current event time to hwState->millis.
Until the evdev time overtakes that stored time, all events have the
hwState->millis time.

If during that time a clickpad triggers a physical click,
clickpad_click_millis is set to hwState->millis + the ignore-motion timeout.
Thus, all motion is ignored until the event time overtakes that stored
time.

The whole issue is further enhanced by us unconditionally setting the timer
func if we get any events, which is a separate issue anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry-picked from commit 90d1930230)
2014-09-05 09:41:15 +10:00
Gabriele Mazzotta
a028ceb894 Prevent two-finger taps from being ignored
When two fingers are used, the coordinates of only one of them is taken into
account. This can lead to sudden variations of the absolute coordinates when
two-fingers taps are performed if the finger considered changes.

Take into account coordinates variations to prevent unwanted taps only if
the number of fingers doesn't change.

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 7d0ff39519)
2014-08-28 10:28:50 +10:00
Peter Hutterer
e57b219a8c conf: increase top software button area to 15%
We had reports that the top software button area is hard to hit for those
using the trackpoint and clicking the buttons with their thumb.

Analysis of event recordings (3 different people) for left, right and middle
clicks shows that there is a significant amount of events up to about 10mm
(with outliers up to 12mm) from the top of the touchpad. That maps to 15%.

Interestingly, the middle button does not seem to need this, presumably the
haptic feedback of the little dots sticking out from the surface make hitting
the button easier. Its size is increased to 15% anyway, for simplicity and
because a sample set of 3 is too small to be definitive about this.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 7301012234)
2014-08-28 10:28:40 +10:00
Peter Hutterer
6dee9b3c5e synaptics 1.7.6
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.6
2014-05-13 11:11:34 +10:00
Peter Hutterer
7c6eaade26 conf: add SoftButtonAreas and SecondarySoftButton areas to fdi file
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-05-05 11:26:42 +10:00
Peter Hutterer
267e978529 synaptics 1.7.5.901
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.5.901
2014-05-01 14:38:49 +10:00
Hans de Goede
fa54c5b8fc Add support for INPUT_PROP_TOPBUTTONPAD
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 7bf2756841)

Conflicts:
	src/eventcomm.c
2014-04-30 13:05:02 +10:00
Peter Hutterer
11b2814c17 If the touchpad is in TOUCHPAD_OFF mode, allow physical clicks
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 dc5474964d)
2014-04-30 12:54:29 +10:00
Stephen Chandler Paul
ed84731b72 Don't allow any type of movement starting in the top softbutton area
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 b40a5255fe)
2014-04-30 12:54:00 +10:00
Stephen Chandler Paul
8732f7b5c1 Replace is_inside_anybutton_area with current_button_area
Signed-off-by: Stephen Chandler Paul <thatslyude@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 9a419ba01c)
2014-04-30 12:54:00 +10:00
Peter Hutterer
1e08fbf8a7 Add property support for secondary (top) software buttons
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 66240dc329)
2014-04-30 12:53:59 +10:00
Hans de Goede
eb3af31c59 Wait for *new* coordinates on a clickpad click before reporting the click
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 bbe4c56c49)
2014-04-30 12:53:59 +10:00
Hans de Goede
ad834529c3 On button down update cumulative to current x and y, instead of previous
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 743c45b9cf)
2014-04-30 12:53:59 +10:00
Hans de Goede
db920ba696 Ignore motion the first X ms after a clickpad click
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 71652fe1f0)
2014-04-30 12:53:59 +10:00
Hans de Goede
6d6bfcbf87 Don't report motion inside soft-button areas
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 3adaf46238)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

Conflicts:
	src/synaptics.c
2014-04-30 12:53:59 +10:00
Hans de Goede
f712eb7c41 Get rid of old_hw_state
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 effeee86c1)
2014-04-30 12:53:59 +10:00
Hans de Goede
59bb2aaaac Add an enum for the different soft_button_areas
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 840670508e)
2014-04-30 12:53:59 +10:00
Benjamin Tissoires
13fc982c67 Add secondary (top) software buttons area
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 402cc87257)
2014-04-30 12:53:59 +10:00
Hans de Goede
75b6fd13cf Allow using the entire touchpad for motions started inside the active area
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 945acfc261)
2014-04-30 12:53:59 +10:00
Hans de Goede
8577f7dcf1 Always count tripletap + click as 3 fingerclick on pads with < 3 touches
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 a6f0f4c9a5)
2014-04-30 12:53:00 +10:00
Peter Hutterer
c5e59d9d91 On clickpads with two touchpoints, try to detect clickfinger 3 actions
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 51b6bf3c10)
2014-04-30 12:52:40 +10:00
Peter Hutterer
da61d8b9dc man: add some missing quotes
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 41afac2abf)
2014-04-30 12:51:18 +10:00
Clinton Sprain
065baf2c85 Fix product ID cutoff for MODEL_APPLETOUCH/MODEL_UNIBODY_MACBOOK
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 efa424b5c9)
2014-04-30 12:51:10 +10:00
Peter Hutterer
baca0fde59 synaptics 1.7.5
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.5
2014-04-29 14:27:30 +10:00
Peter Hutterer
bbaf4d646e Avoid erroneously handling two touchpoints in the same slot
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-20 11:51:27 +10:00
Peter Hutterer
a21b3bd602 eventcomm: drop assumption of non-zero slot offset
The kernel guarantees this is always 0

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-20 11:51:12 +10:00
Peter Hutterer
91cc1e8214 eventcomm: drop calculation of slot offset
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 5b7e172636)
2014-03-20 10:58:23 +10:00
Peter Hutterer
8a5533aaa7 synaptics 1.7.4
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.4
2014-03-12 09:42:38 +10:00
Keith Packard
c189854a68 Close device if DeviceOnHook fails
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 22fe8bdc66)
2014-02-24 08:11:04 +10:00
Peter Hutterer
503082bf17 man: setting scroll deltas to 0 doesn't work (#75074)
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 2ea76fad65)
2014-02-21 11:10:31 +10:00
Peter Hutterer
0b70c76eab Revert "Drop circular pad support"
This reverts commit 3b02e7fd81.

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 4f543ce1d6)
2014-02-21 11:10:29 +10:00
Peter Hutterer
1bd4ca3b5a Revert "Purge scrollbuttons (repeat)"
This reverts commit 0903d99ada.

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 e0069c1544)
2014-02-21 11:10:27 +10:00
Peter Hutterer
90d93891be synaptics 1.7.3
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.3
2014-01-13 15:14:06 +10:00
Peter Hutterer
b227ca373d Fix ABI detection for in-driver scaling
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 49fe70e99d)
2014-01-13 15:13:19 +10:00
Peter Hutterer
88d926d12a synaptics 1.7.2
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.2
2013-12-09 11:28:23 +10:00
Peter Hutterer
61243ada3e eventcomm: ungrab the device on DeviceOff
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 5d391e352f)
2013-12-09 11:17:01 +10:00
Peter Hutterer
09ac39309f Add missing property handler for the pressure motion factor
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 29318c1d94)
2013-12-09 11:15:28 +10:00
Peter Hutterer
f4ddbde165 Disable driver scaling for input ABI 19.2
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 0fb59b3487)
2013-12-05 09:45:04 +10:00
Peter Hutterer
96cf04dce1 synaptics 1.7.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
xf86-input-synaptics-1.7.1
2013-05-13 10:03:48 +10:00
Peter Hutterer
3bd40423b2 Plug memory leak for priv->touch_axes
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-09 11:11:18 +10:00
Peter Hutterer
eb50f8023e Plug memory leak for option_string
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-05-09 11:11:04 +10:00
Peter Hutterer
7cc0ebf085 Fix stack smash in clickpad_guess_clickfingers()
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-26 10:09:10 +10:00
Peter Hutterer
ac47b4ea5b Allow soft button areas to overlap on the edge
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-05 10:43:15 +10:00