Age | Commit message (Collapse) | Author |
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
(cherry picked from commit e28575b29b394b38f1d92b75353fc0fe82838b7c)
|
|
CoastingSpeed is defined as scrolls/s. The previous code just used
delta/seconds which depended on the device coordinate range and exceeded the
default CoastingSpeed at almost any scroll event.
Divide the estimated delta by the scroll distance to get the accurate
scrolls/s number. Since that now changes the contents of what's in
coast_speed_y, change the users of that too.
http://bugzilla.redhat.com/813686
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0de4445ff8e75aab208faf6383e76045934c6720)
|
|
x-indent-all.sh from xorg/util/modular as of
c2d630fab65dbe3409af3947f6f442782ddb026f
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
|
When MBE is enabled, a physical left button press is delayed until a
timeout is reached. This results in the logical left button being
depressed while the physical left button is pressed. The physical state
is stored as the "old" hw state, and it is used for detecting a
transition from depressed to pressed for clickfinger actions. Since the
"old" hw state shows the left button pressed, but the current logical
state shows the left button unpressed, when the MBE timeout fires and we
set the logical left button pressed the transition check fails.
Since the "old" hw state is only used for clickfinger left button press
transitions, redefining it to hold the previous logical hw state is
sufficient for fixing the bug and should not cause any regressions.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Some clickpad devices have button areas painted on them. Set this
property to the area of the right and middle buttons to enable proper
click actions when clicking in the areas.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Previously, all touch data from semi-mt devices was ignored because the
X server doesn't support them. However, the touch data must be used for
proper clickpad handling.
Instead of ignoring semi-mt device touch events, mark the device as
being semi-mt and allow initialization of the touch state. The touches
will then be used in calculating the cumulative_d{x,y} values that are
needed for clickpad support.
When handling the touch data for X event processing, simply skip over
reporting the touches.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Use cumulative relative touch motion when the clickpad is pressed. If
more than one touch is active, assume one of the touches is designated
solely for pressing the clickpad button. Thus, decrement the number of
reported touches.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Add it as a writable device property. We may not know how to probe some
clickpads so allow the user to override it.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
|
Introduced in c34cf307f9982b62c6e6dfa2687e1b16f527f2a4.
synapticsstr.h includes synproto.h, which now contains the typedef.
X.Org Bug 47168 <http://bugs.freedesktop.org/show_bug.cgi?id=47168>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
|
All Elantech touchpads report the number of fingers explicitly,
and at least the v3 version of the hardware can report any
pressure values down to zero. This interferes with the tap
detection hysteresis, which is required for dumb touchpads.
This commit implements a vendor-specific workaround for Elantech
touchpads which sets the FingerLow and FingerHigh options to 1
by default, effectively disabling the hysteresis mechanism.
Signed-off-by: Peter Zotov <whitequark@whitequark.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|
|
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Initialize touch stuff in a separate function for readability.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This is needed for when SynapticsHwState can't be allocated on the stack.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
SynapticsHwStruct (SHS) will soon include ValuatorMasks, which can only
be allocated on the heap. The input driver callbacks are called in
signal context, so we can't instantiate a new SHS when that occurs.
Since we only ever need one SHS, allocate one at device init time and
use it in place of local SHS instances.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Fixes a compiler warning due to discarding the const qualifier as it
comes back from the option code.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Post smooth-scrolling events through the new X server API when
available, rather than legacy jerky button events.
[Amended to use the final smooth scrolling API]
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Amendments-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Convert ScrollData from up/down/left/right members for button presses,
to more fine-grained delta_x and delta_y members, and move these to
priv->scroll.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Also rename (e.g. autoscroll_x -> coast_delta_x, and
autoscroll_xspd -> coast_speed_x) variables to clarify things a bit.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Stopping a little short of having a full scroll history, adding
last_millis lets us track when the last scroll event we sent was,
for more accurate timing of coasting in particular.
Signed-off-by: Derek Foreman <derek.foreman@collabora.co.uk>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
And rename them to last_x, last_y and last_a respectively, as they're
used to store the values as of the last scroll event sent.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Make the palm-check logic more stable and reliable, and make sure that
any palms are blocked for the duration of their presses.
Signed-off-by: Derek Foreman <derek.foreman@collabora.co.uk>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Use better time estimates so we can provide better fake motion events.
This reduces the difference between motion with one and two fingers down
to be almost imperceptible, despite the reporting rate being halved on
PS/2 devices.
Signed-off-by: Derek Foreman <derek.foreman@collabora.co.uk>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Rather than always setting hw->millis as the time when we received the
event in our SIGIO handler, use the time provided by the kernel if
applicable (i.e. if we're using evdev rather than PS/2 or similar).
Signed-off-by: Derek Foreman <derek.foreman@collabora.co.uk>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
[from_timer is in preparation for a future patch, currently unused]
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
As GetTimeInMillis() returns a CARD32, switch every timestamp usage to
follow.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Since we depend so heavily on ordering and numbering, just give all the
enum explicit number values.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
xf86IDrvMsg automatically logs driver and device name.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Debian bug #622663 <http://bugs.debian.org/622663>
Signed-off-by: Cyril Brulebois <kibi@debian.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This patch needs more work before we can ship it.
This reverts commit 049d5fb6037b34d94b24cb8300849cf4e3b67437.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This patch allows usage of "synclient Orientation=0" (values from 0 to
3). It will rotate the touchpad similar to "xrandr -o". Original patch
was extended for alps and ps2.
Signed-off-by: Christoph Brill <egore911@egore911.de>
|
|
Now SynapticsDefaultDimensions() called only once
Signed-off-by: Alexandr Shadchin <Alexandr.Shadchin@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This introduces hysteresis into the driver's processing. It significantly
reduces noise motion, i.e. now the pad does no longer generate a stream of
sub-pixel events when just holding the position with the finger down.
Also, taking off the finger no longer generates additional motion,
scrolling becomes flicker-free etc.
The code makes use of "fuzz" from the kernel, if available. This has not
been tested extensively, as an overwhelming majority of evdev touchpad
drivers view 0 (zero) as a good value for fuzz, forcing userland into
assuming "zero fuzz" means "make zero assumptions about fuzz", not
"there is no fuzz". Until things improve, this is what we do.
Anyway, the fuzz a.k.a. hysteresis can be set/overridden with options
and properties, as documented.
Signed-off-by: Simon Thum <simon.thum@gmx.de>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Joe Shaw <joe@joeshaw.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Conflicts:
src/properties.c
|
|
The latter is about to be removed from the server, InputInfoPtr has been
around in all supported server versions.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
When you are coasting (but not corner coasting) you might want the
scrolling to slow down and stop on its own. This also lets you
start coasting while using a two finger scroll.
Signed-off-by: Patrick Curran <pjcurran@wisc.edu>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Most modern touchpads track 1st finger during multi-touch. If first finger
is lifted then a jump will occur as X/Y transition to next finger location.
Resetting X/Y history as each finger is lifted will hide this transition.
Synaptics hw specs claim older hardware report X/Y values that are average
point between multi-fingers which can cause unwanted jump. Reset X/Y
history during transition to new fingers to hide this as well.
Signed-off-by: Chris Bagwell <chris@cnpbagwell.com>
Tested-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Some properties are only valid with hardware supports
width. Namely, *MinW properties. Config GUI's may
wish to disable/grey out options related to width support.
This combined with pressure property is good indication when
2 finger scrolling can be supported using emulation.
Signed-off-by: Chris Bagwell <chris@cnpbagwell.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Guest mouse dates back to quite a while ago, hasn't been tested for ages and
the current synaptics interface guide claims the bit that we used to check
if guestmouse is available is "reserved for future use. The host should
ignore the values of reserved bits when reading the capability bits."
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
No functional changes, just code structure. The eventcomm backened is the
only one with a real probe function right now. So provide a default query
proc that reads the touchpad coordinates in. The values provided are the
ones that then will give us the right edge settings in concordance with the
default we had before.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
There are not a lot of touchpads that have extra physical scroll buttons
anymore. For those that don't have them, don't initalize the properties and
conditionalize some of the code (moved into its own functions).
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Add --enable-debug to list of configure options.
Clean up the DBG macro to use xf86MsgVerb and supply the verbosity.
Don't use ErrorF from the driver, use xf86Msg instead.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Adam Jackson <ajax@redhat.com>
|
|
This option auto-adjusts the right edge on the touchpad but wrongly so. It
does not take the edge width into account, thus setting the right edge to
the max value received - leaving only a single-pixel scroll area in some
cases.
A previous attempt to auto-adjust edges has failed (afb60a0b). The kernel's
min/max values cannot be relied on for actual range clipping and thus scroll
edge settings are best left untouched.
X.Org Bug 21001 <http://bugs.freedesktop.org/show_bug.cgi?id=21001>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
(#21001)"
This reverts commit afb60a0b2497c5d08cbd1739fa8ae6585c428881.
From comment 24 to #21001:
I've been running this code for over a week now and I'm not happy with it.
Once I move over to the right, the scroll-edge becomes so small that it's
hard to trigger.
Source of the problem is the information provided by the kernel. The kernel
hands us a min/max value for the synaptics pads but this value is not
reflective of the actual physical boundaries. The other dimensions are based
on these min/max ranges.
My RightEdge setting by default is 5129, after moving to the right it
becomes 5677. The announced max for x is 5472. We have model-specific edge
settings and in the case of synaptics the width of the scroll area is 7% of
the total width (based on min/max). This works, but obviously only because
the max is wrong. I've tried upping this to 15% and it works fine but unless
the edge is adjusted the scroll bar takes over too much of the pad.
So right now I'm inclined to revert this patch and just ditch any
auto-adjustment of scroll edges whatsoever. This way, the original setting
is maintained even if we reach outside of the min/max area.
Conflicts:
src/synaptics.c
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|