summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2010-03-18After closing the fd, reset it to -1.Peter Hutterer
A DeviceOff() followed by DeviceClose() (which calls DeviceOff()) would try to close the fd twice, in addition to calling various hooks. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Julien Cristau <jcristau@debian.org>
2010-03-15Don't clobber the timer we just created.Adam Jackson
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2010-01-11configure: don't clobber CFLAGSJulien Cristau
CFLAGS is a user variable. Signed-off-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-12-11Don't destroy the timer on DeviceOff.Adam Jackson
DeviceOff is VT switch, DeviceClose is unplug. We need the timer pre-allocated since we set it during the signal handler and so can't allocate it then, so merely cancel it at DeviceOff, and delete it in DeviceClose. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-11-05Reduce SynapticsCtrl to a stub.Peter Hutterer
It hasn't done anything useful since at least 2003 and the debug message just spams the log. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Adam Jackson <ajax@redhat.com>
2009-11-05eventcomm: don't use the Xisb buffers for reading.Peter Hutterer
The kernel promises to give us 32 bytes for each event, so we don't have to juggle the Xisb buffers around for the eventcomm devices. This leaves the Xisb buffers hanging around but useless (they are initialized regardless). Task for a later cleanup. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Adam Jackson <ajax@redhat.com>
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-11-05Always make the input buffer size 200Peter Hutterer
PreInit initalizes the input buffer with 200, DeviceOn only with 64. For consistency, use the same size in both. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Adam Jackson <ajax@redhat.com>
2009-09-04Use finger state as an enum, not as a bool.Peter Hutterer
SynapticsDetectFinger mixed using finger as an FS_* enum and as a bool if palm detect was on. Reshuffle the conditions that it stays as-is or is reset to FS_UNTOUCHED, whichever is appropriate. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de>
2009-09-04Remove abysmal misuse of ternary operator.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de>
2009-08-03Split rc and ret into two different variables.Peter Hutterer
This is a cosmetic change only. ioctls - though not the ones used here - may return non-zero non-negative values to the caller. Using the return value as a boolean and as return value for ioctls at the same time could result in false positives if one ioctl returns 1. This cannot happen in this part of the code but a separation of the two improves readability. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de>
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-07-10Move edge calculation stuff out into separate function.Peter Hutterer
2009-06-19Cope with ABI_XINPUT_VERSION 7.Peter Hutterer
Version 7 requires button and axes labels. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-06-19Simplify xf86InitValuator calls a bit.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Christoph Brill <egore911@egore911.de>
2009-05-28Add "Synaptics Capabilities" read-only property.Peter Hutterer
This patch adds a "Synaptics Capabilities" property that advertises the capabilities of the device in a read-only boolean property. The first three values signal the presence of physical mouse buttons (left, middle, right). Values 4 and 5 signal the touchpad's ability to do multi-finger tracking. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2009-05-20eventcomm: fix return value of event_query_is_touchpad.Peter Hutterer
"ret" is used both for storing the ioctls return value as well as for the return of event_query_is_touchpad. If an ioctl fails, ret is -1 and we return this value as a BOOL. The caller treats this -1 as TRUE and thinks the device is a touchpad. Bug is triggered if a xorg.conf section is present with auto-dev as device and a mouse event device is openeded before the synaptics event device. Introduced with e4b1571d487cb67bab64e1ee890bddcd02437ddf. Red Hat Bug 499792 <http://bugzilla.redhat.com/show_bug.cgi?id=499792> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2009-05-19Fix broken build on FreeBSD (#21803)Coleman Kane
Band-aid to fix the build and function prototype mismatches on FreeBSD (and maybe others, but I don't have any more to test). Signed-off-by: Coleman Kane <ckane@colemankane.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-05-18eventcomm: force boolean values for has_left, has_right, etc.Peter Hutterer
TEST_BIT simply returns the value of the bytes, so we end up with has_left and friends being an integer value instead of a boolean value. This again may cause confusion in other parts, if a 1/0 boolean value is expected (e.g. all xf86SetBoolOption()). Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
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-08eventcomm: if we can't grab the device, assume it's not a touchpad.Peter Hutterer
If a device is configured in the xorg.conf, it will get added once in the config, once through HAL. Since we grab the device, the second device will be mute. And confuses tools and users alike. So let's just assume that if we can't grab the device, it doesn't exist. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de>
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>
2009-05-08Add model-specific edges for appletouch.Jeremy Huddleston
Needs around 8.5% to be useable. I created a table to iterate through the different products rather than using if/else branches. I can enumerate the appletouch product_ids, but I suspect they will all be around the same range (hence the PRODUCT_ANY). If another product id shows different behavior, we can just add an entry to the table as appropriate. I also changed the default eheight to be 5.4% to match the spec. Reported-by: Jeremy Huddleston <jeremyhu@freedesktop.org> Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2009-05-05Add TouchpadModel specifier and scale the edges accordingly. (#21214)Peter Hutterer
ALPS models need different edge settings than synaptics pads to make the edges work propertly. So try to auto-detect the model (eventcomm anyway) and set the edges accordingly. New edge defaults are: synaptics: 7% of the total width alps: 15% of the total width unknown: 4% of the total width (see Synaptics UI guide) X.Org Bug 21214 <http://bugs.freedesktop.org/show_bug.cgi?id=21214> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2009-05-04ps2comm: fix typo in debug statement.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-05-04If QueryHardware failed, return that failure and clean up.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2009-05-04Only try to free the timer if it's actually there.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2009-04-30Fix typo, missing ":"Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-04-28PS/2 interface: sense multifinger taps on FingerHigh (#21427)Eygene Ryabinkin
Previously multifinger taps were sensed on the Z value > 0: this isn't very correct. Accorging to the specification, Z values below 30 correspond only to a very light taps or just floating fingers. I had run into the situation when I was clicking on the physical left button and that click was transformed to the right button click via ClickFinger2, but I wasn't tapping the touchpad at all. Investigations showed very small values of Z -- my other fingers were just floating above touchpad. This change also makes click (and finger) detection more consistent, because it uses FingerHigh to detect taps everywhere. X.Org Bug 21427 <http://bugs.freedesktop.org/show_bug.cgi?id=21427> Signed-off-by: Eygene Ryabinkin <rea-fbsd@codelabs.ru> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Henrik Rydberg <rydberg@euromail.se>
2009-04-26Remove un-used DeviceOn/Off hooks.Peter Hutterer
And allow for them to be NULL without crashing the server. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-04-26Remove Synaptics SHM configuration bits.Peter Hutterer
The only thing we still export through SHM is the hardware state.
2009-04-16Allocate the timer early so we don't try to malloc it within a sigio handler.Adam Jackson
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-03-24Shut up valgrind warnings about uninitialized variables.Peter Hutterer
Reported-by: Zdenek Kabelac <zkabelac@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-03-05include xorg-server.h from all driver source files.Peter Hutterer
This fixes the 64-bit issues with 1.0.99.3. Not having xorg-server.h included in time means we miss out on _XSERVER64, which leads to different sizes of the LocalDeviceRec struct in the driver and the server. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-03-04Don't auto-include xorg-server.h in config.hPeter Hutterer
config.h is needed by synclient/syndaemon, and including xorg-server.h leads to funny results on 64 bit machines. Not "ha ha" funny though. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-20change magic numbers to fractionsMarcel Dejean
Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-20two-finger emulation through fingerWidthMarcel Dejean
Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-17Remove synSetFloatOption, use xf86SetRealOption instead.Peter Hutterer
As a side-benefit, this means float options now show up in the log too. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>Z
2009-01-27properties: implement float properties.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2008-12-12Fix compilation issue (opts undeclared) for XINPUT ABI 0. (#18988)Peter Hutterer
HistorySize is now deprecated for ABI > 0, so list it as a removed option in the man page. X.Org Bug 18988 <http://bugs.freedesktop.org/show_bug.cgi?id=18988> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2008-12-12Auto-adjust right_edge for touchpads with hardware scroll area.Fedor P. Goncharov (Fredy)
If RightEdge is specified as a config option, ignore the SpecialScrollArea. Otherwise, adjust right_edge to the bounds of the hardware scroll area. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Christoph Brill <egore911@egore911.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2008-12-04Use the correct header so psmcomm.h builds againBenjamin Close
2008-12-03change type of FastTaps option to boolFedor P. Goncharov (Fredy)
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-12-03Export synapticsModuleDataMagnus Kessler
Mark synapticsModuleData as exported so that it can be used with xorg-server compiled with visibility flags. Signed-off-by: Magnus Kessler <Magnus.Kessler@gmx.net> Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-11-25Stop two-finger scrolling if no finger is present.Batchty
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com> Signed-off-by: Simon Thum <eGore@gmx.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
2008-11-25Ignore moves during tap processing if no finger is down.Batchty
The Dell Inspiron 1520 with a Synaptics touchpad loves to send event like these after every finger release : time x y z f w l r u d m multi gl gm gr gdx gdy 1.563 3224 1625 57 1 5 0 0 0 0 0 00000000 0 0 0 0 0 1.574 3251 1632 30 1 5 0 0 0 0 0 00000000 0 0 0 0 0 1.584 3292 1673 10 1 5 0 0 0 0 0 00000000 0 0 0 0 0 1.594 1 5855 3 2 5 0 0 0 0 0 00000000 0 0 0 0 0 1.634 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 1.746 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 1.897 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 Most of the time these events are ignored by the driver, but sometimes it confuses two-finger scrolling and tap detection. For example, in this log, the first tap is recognized, the second isn't : time x y z f w l r u d m multi gl gm gr gdx gdy 11.597 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 11.678 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 11.688 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 11.709 3862 2406 8 1 5 0 0 0 0 0 00000000 0 0 0 0 0 11.719 3851 2464 67 1 5 0 0 0 0 0 00000000 0 0 0 0 0 11.729 3849 2407 35 1 4 0 0 0 0 0 00000000 0 0 0 0 0 11.739 3858 2578 5 1 9 0 0 0 0 0 00000000 0 0 0 0 0 11.749 3858 2578 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 11.850 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 11.860 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 12.073 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.083 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 12.347 1 5855 4 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.357 3844 2381 56 1 4 0 0 0 0 0 00000000 0 0 0 0 0 12.377 3848 2361 32 1 4 0 0 0 0 0 00000000 0 0 0 0 0 12.388 1 5855 3 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.398 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.408 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 12.428 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 The problem with the second tap is that the driver check if the movement from (3848,2361) to (1,5855) is over TapMaxMove before it checks for a finger release. So the driver considers it as a (short) finger move. Add the condition ''the finger is still present'' to the 'move' condition, so we ignore these moves.. Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com> Signed-off-by: Simon Thum <eGore@gmx.de> Signed-off-by: Henrik Rydberg <rydberg@euromail.se>