summaryrefslogtreecommitdiff
path: root/src/synapticsstr.h
AgeCommit message (Collapse)Author
2012-03-14Add soft button areas propertyChase Douglas
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>
2012-03-14Calculate touch data for semi-mt devices, but don't send touch eventsChase Douglas
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>
2012-03-14Enable clickpad click and drag with two fingersChase Douglas
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>
2012-03-14Add clickpad device propertyChase Douglas
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>
2012-03-14Add an old_hw_state field to remember the last valuesPeter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
2012-03-13Fix build error - duplicate typedef (#47168)Peter Hutterer
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>
2012-03-05Implement a workaround for Elantech touchpadsPeter Zotov
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>
2012-02-11Move X touch event processing into synaptics.cChase Douglas
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>
2012-02-11Add open_slots array to SynapticsPrivateChase Douglas
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>
2012-02-11Add touch valuator mask to hw state structureChase Douglas
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>
2012-02-11Rename num_touches to max_touchesChase Douglas
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>
2012-02-10Allocate priv->hwStateChase Douglas
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>
2012-02-10Allocate SynapticsHwStruct for local function useChase Douglas
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>
2012-01-26Add touch device class supportChase Douglas
Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2012-01-06Constify priv->deviceDaniel Stone
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>
2011-10-24Scroll: Initial smooth scrolling supportDaniel Stone
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>
2011-10-18Scroll: Prepare ScrollData for smooth scrollingDaniel Stone
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>
2011-08-25Scroll: Move coasting variables to priv->scrollDaniel Stone
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>
2011-08-25Scroll: Add last_millis to track scroll event timingDerek Foreman
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>
2011-08-25Scroll: Move scroll_[xya] into new priv->scroll structDaniel Stone
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>
2011-08-25Revise palm check logicDerek Foreman
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>
2011-08-25More accurate extrapolated fake motion eventsDerek Foreman
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>
2011-08-25Use hardware time where possibleDerek Foreman
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>
2011-08-25Use CARD32 for timestampsDaniel Stone
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>
2011-08-25Give FingerState enums explicit valuesDaniel Stone
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>
2011-05-31Replace xf86Msg with xf86IDrvMsgPeter Hutterer
xf86IDrvMsg automatically logs driver and device name. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-05-31Export device node as property.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-05-31Initialize the vendor/product id property if we know either.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-04-14Fix egde/edge typo in manpage and comments.Cyril Brulebois
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>
2011-03-18Revert "Add synaptics orientation support"Peter Hutterer
This patch needs more work before we can ship it. This reverts commit 049d5fb6037b34d94b24cb8300849cf4e3b67437. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-03-09Add synaptics orientation supportAapo Rantalainen
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>
2011-03-01Simplified mechanism for determining default sizeAlexandr Shadchin
Now SynapticsDefaultDimensions() called only once Signed-off-by: Alexandr Shadchin <Alexandr.Shadchin@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-02-21Add hysteresis-based noise reductionSimon Thum
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>
2010-10-14track abs/rel mode changes in SwitchMode() instead of ignoring themJoe Shaw
Signed-off-by: Joe Shaw <joe@joeshaw.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-09-01Merge branch 'input-api'Peter Hutterer
Conflicts: src/properties.c
2010-09-01Use InputInfoPtr instead of LocalDevicePtr.Peter Hutterer
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>
2010-08-20Added "friction physics" so coasting can stop on its own.Patrick Curran
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>
2010-08-20Reset X/Y hist on multi finger transition to fix jumpsChris Bagwell
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>
2010-07-21Expose width support in capabilites properity.Chris Bagwell
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>
2010-06-17Purge GuestMouse support.Peter Hutterer
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>
2010-06-17Reshuffle default value initialization.Peter Hutterer
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>
2010-05-10Make scrollbuttons processing and property conditional on their existence.Peter Hutterer
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>
2009-11-05Clean up debugging system, allow for --enable-debugPeter Hutterer
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>
2009-07-28Remove the "SpecialScrollAreaRight" option. (#21001)Peter Hutterer
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>
2009-07-27Revert "Auto-adjust edges if values fall outside queried min/max ranges. ↵Peter Hutterer
(#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>
2009-07-17Add active area outside of which movements, scrolling, tapping are ignored.Alberto Milone
On some touchpads physical buttons are located under the touchpad surface. As a result, when users try to perform a click, by pressing that part of the surface of the touchpad, they get a click, a movement, a tap and (in some cases) a scroll, which can make clicks quite inaccurate. The "Synaptics Area" property can be used to define the edges of the active area of the touchpad so that all movement, scrolling and tapping which take place outside of this area will be ignored. This property is disabled by default. Fixes xorg bug #21613. Signed-off-by: Alberto Milone <alberto.milone@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-07-16Add configurable x/y resolution to fix sensitivity on wide touchpads.Tero Saarni
Synaptics uses anisotropic coordinate system. On some wide touchpads vertical resolution can be twice as high as horizontal which causes unequal sensitivity on x/y directions. VertResolution and HorizResolution can be used to set the resolution. The ratio of the values is used to compensate x/y sensitivity. The properties are configured automatically if touchpad reports resolution and if running on linux 2.6.31 or newer. Fixes xorg bug #18351. Signed-off-by: Tero Saarni <tero.saarni@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-07-10Auto-adjust edges if values fall outside queried min/max ranges. (#21001)Peter Hutterer
The kernel provides min/max for x/y values but still allows devices to send coordinates outside this range. If the edges are autodetected, re-adjust the edge settings to fit within the new effective min/max range. When the edges change the property needs to be updated accordingly. This can't be done immediately as changing properties requires mallocs and HandleState is called during the signal handler. Instead, set a timer to be called when the server isn't busy and update the property then. The delay between setting the timer and sending the property notify event also reduces the number of events sent, the property event includes the latest state only. If the edges were configured by the user, don't re-adjust. This obsoletes the SpecialScrollAreaRight option as it provides the same functionality, without the side-effects triggering 21001. X.Org Bug 21001 <http://bugs.freedesktop.org/show_bug.cgi?id=21001> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-05-13Add TapAndDragGesture option and gestures property.Erkin Bahceci
The tap-and-drag gesture is an alternative way of dragging. It is performed by tapping (touching and releasing the finger), then touching again and moving the finger on the touchpad. This gesture is enabled by default and can be disabled by setting the TapAndDragGesture option to false. The gesture already existed in synaptics and was always enabled. This commit adds an option to switch it on/off. The default behavior is tap-and-drag being enabled, that is, TapAndDragGesture is true. The "Synaptics Gestures" property is intended to hold all new gesture enabling options, like options for the upcoming multitouch gestures. Signed-off-by: Henrik Rydberg <rydberg@euromail.se> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-05-08Purge SynapticsHWInfo stuff, move it into proto_data.Peter Hutterer
This was only used in PS/2, on linux only on kernel 2.4 and it clobbered up the rest. Move it to the ps2comm parts only, keep it private there. This includes adding a "proto_data" field to the SynapticsPrivate. This patch removes the -h option for synclient. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de>