--- xserver-xorg-input-synaptics-1.6.2.orig/autogen.sh +++ xserver-xorg-input-synaptics-1.6.2/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" --- xserver-xorg-input-synaptics-1.6.2.orig/docs/trouble-shooting.txt +++ xserver-xorg-input-synaptics-1.6.2/docs/trouble-shooting.txt @@ -0,0 +1,152 @@ +Trouble-shooting guide +---------------------- + +Contents +-------- + +1. Check that the touchpad is correctly detected by the kernel +2. Check that an external PS/2 mouse isn't causing problems +3. Check if some other program is using the /dev/psaux device +4. Check that the evdev kernel driver is available +5. Check that the synaptics driver is properly loaded by the X server +6. Check that the touchpad is enabled in the BIOS/hardware + + +1. Check that the touchpad is correctly detected by the kernel +-------------------------------------------------------------- + +If you are using a 2.6 linux kernel, check the /proc/bus/input/devices +file. The touchpad must be identified a "SynPS/2 Synaptics TouchPad" +or an "AlpsPS/2 ALPS TouchPad". If it is identified as a "PS/2 Generic +Mouse" or "PS/2 Synaptics TouchPad", something is wrong. + +Possible fixes: + +1. Check your BIOS settings. Some BIOSes can do USB -> PS/2 mouse + emulation which can interfere with the touchpad. There may be a way + to disable the legacy mouse emulation from the BIOS setup program. + +2. Arrange so that the kernel initializes the USB subsystem before the + PS/2 touchpad. Initializing the USB mouse sometimes disables the + BIOS emulation. Compiling psmouse as a module and loading it in + /etc/rc.d/rc.local usually assures the USB is initialized first. + +3. Disconnect the USB mouse and restart the computer. (Not really a fix, + but can help when trying to figure out what's wrong.) + +4. Make sure your boot loader doesn't pass any parameter to the kernel + that disables mouse extensions. ("psmouse_proto=bare" for example). + Alternatively, if psmouse is compiled as a module, make sure that + modprobe doesn't pass such parameters. Check /etc/modprobe.conf and + "rmmod psmouse; modprobe -v psmouse". + +If you run a 2.4 kernel or an non-linux kernel, the +/proc/bus/input/devices file is not available, but the BIOS setting +could be relevant anyway. + + +2. Check that an external PS/2 mouse isn't causing problems +----------------------------------------------------------- + +If you want to use an external PS/2 mouse at the same time as the +synaptics touchpad driver, you must use a 2.6 linux kernel and your +hardware (keyboard controller) must support active multiplexing. You +should see something like this when the computer boots: + + mice: PS/2 mouse device common for all mice + i8042.c: Detected active multiplexing controller, rev 1.1. + serio: i8042 AUX0 port at 0x60,0x64 irq 12 + serio: i8042 AUX1 port at 0x60,0x64 irq 12 + serio: i8042 AUX2 port at 0x60,0x64 irq 12 + serio: i8042 AUX3 port at 0x60,0x64 irq 12 + +If you don't use a 2.6 kernel or your hardware doesn't support active +multiplexing, you can't use an external PS/2 mouse together with the +touchpad driver. + + +3. Check if some other program is using the /dev/psaux device +------------------------------------------------------------- + +If you use a 2.4 linux kernel, only one program at a time can reliably +read from /dev/psaux. This means that if you for example have GPM +running, it will probably prevent the synaptics driver from working +correctly. It also means that if you have a second InputDevice in your +X configuration file, it must not read from /dev/psaux. You probably +want it to read from /dev/input/mice instead, which will handle USB +mice in both 2.4 and 2.6 linux kernels, and both USB and external PS/2 +mice if you use a 2.6 kernel. + +The 2.6 linux kernel fixes the /dev/psaux shortcoming, so that you can +safely run GPM and the synaptics driver at the same time. + + +4. Check that the evdev kernel driver is available +-------------------------------------------------- + +If you are using a 2.6 linux kernel, the evdev kernel driver is needed +for the X driver to be able to communicate with the kernel driver. +Check the /proc/bus/input/devices file. The Handlers= line should +contain an event device name, like this: + + H: Handlers=mouse0 event0 + +If there is no event handler, you either have to load the evdev kernel +module or recompile the kernel and build it into the kernel. If you +don't want to recompile the kernel, adding "/sbin/modprobe evdev" to +/etc/rc.d/rc.sysinit usually works. + + +5. Check that the synaptics driver is properly loaded by the X server +--------------------------------------------------------------------- + +The X log file is usually called /var/log/XFree86.0.log or +/var/log/Xorg.0.log. It should contain something like this: + + (II) LoadModule: "synaptics" + (II) Loading /usr/X11R6/lib/modules/input/synaptics_drv.o + (II) Module synaptics: vendor="X.Org Foundation" + compiled for 4.3.99.902, module version = 1.0.0 + Module class: X.Org XInput Driver + ABI class: X.Org XInput driver, version 0.4 + +If the LoadModule line is missing, you probably forgot to add + + Load "synaptics" + +to the "Module" section in the X config file, or you modified the +wrong config file. Some systems that have been upgraded from XFree86 +to Xorg or from XFree86 3.x to XFree86 4.x can have multiple config +files in the /etc/X11/ directory, but only one is used. + +Next, check that the log file also contains a line like this: + + (II) Synaptics touchpad driver version 0.13.4 + +If there is no such line, there is probably a binary compatibility +problem between the synaptics driver and the X server. + +Possible fixes: + +1. Try upgrading to the latest synaptics driver. + +2. Try installing the X SDK package if it is available for your + version of X. (In Fedora Core 2, that package is called + xorg-x11-sdk-6.7.0-2.i386.rpm.) Then re-compile the synaptics + driver and try again. + +3. Make sure the driver is compiled with the same compiler version as + the X server. + + +6. Check that the touchpad is enabled in the BIOS/hardware +---------------------------------------------------------- + +On some computers, it is possible to disable the touchpad either with +a special key combination, from the BIOS, or with a special touchpad +on/off button. On some machines, cycling the power doesn't +automatically reenable the touchpad. + +If the touchpad appears to be dead, try to enable it from the BIOS or +using a key combination. One user also reported that he had to remove +the computer battery to make his touchpad operational again. --- xserver-xorg-input-synaptics-1.6.2.orig/docs/tapndrag.dia +++ xserver-xorg-input-synaptics-1.6.2/docs/tapndrag.dia @@ -0,0 +1,1827 @@ + + + + + + + + + + + + + #A4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Start# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #1# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #2b# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #3# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Move# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Drag# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T : Touch +R : Release +TO : Tap Timeout +TO2: Mouse click timeout +TO3: Double tap timeout +TO4: Single tap timeout +TO5: Locked drag timeout +M : Finger movement +[U]: Generate button up event +[D]: Generate button down event +L : Locked drags enabled +F : Fast taps enabled +TDG: Tap-and-drag gesture enabled# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T +[D]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R +[D] if F# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO or M# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #(TO or M) +and TDG# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO3 +[D,U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R & !L +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #4# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #5# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R & L# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO +or +M# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #2a# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #Single +Tap# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO4 +[U] if F +[D] if !F# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T +[D] if TDG# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO2 +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO5# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #(TO or M) +and !TDG# + + + + + + + + + + + + + + + + + + + + + + + + --- xserver-xorg-input-synaptics-1.6.2.orig/docs/README.alps +++ xserver-xorg-input-synaptics-1.6.2/docs/README.alps @@ -0,0 +1,77 @@ +It is possible to use this driver with an ALPS Glidepoint device. If +you use an older 2.6 linux kernel which has no ALPS input driver, you +need to apply the ALPS kernel patch in the alps.patch file. See +http://www.kernelnewbies.org/faq/ for information about how to apply +kernel patches and compile kernels. + +Note! If you use kernel 2.6.11 or later, the alps patch is already +included, so you don't have to patch your kernel. + +Since ALPS touchpads don't have the same resolution as Synaptics +touchpads, you probably have to change some parameter values. Here is +an example InputDevice section for the X configuration file. + +Section "InputDevice" + Driver "synaptics" + Identifier "Mouse[1]" + Option "Device" "/dev/psaux" + Option "Protocol" "auto-dev" +# enable SHMConfig if you want to enable synclient +# NB: enabling SHMConfig is insecure, since any user can invoke it +# Option "SHMConfig" "on" + Option "LeftEdge" "120" + Option "RightEdge" "830" + Option "TopEdge" "120" + Option "BottomEdge" "650" + Option "FingerLow" "14" + Option "FingerHigh" "15" + Option "MaxTapTime" "180" + Option "MaxTapMove" "110" + Option "EmulateMidButtonTime" "75" + Option "VertScrollDelta" "20" + Option "HorizScrollDelta" "20" + Option "CornerCoasting" "1" + Option "CoastingSpeed" "3" + Option "MinSpeed" "0.3" + Option "MaxSpeed" "0.75" + Option "AccelFactor" "0.015" + Option "EdgeMotionMinSpeed" "200" + Option "EdgeMotionMaxSpeed" "200" + Option "UpDownScrolling" "1" + Option "CircularScrolling" "1" + Option "CircScrollDelta" "0.1" + Option "CircScrollTrigger" "2" +EndSection + +If you use a 2.4 linux kernel, you don't need to patch the kernel, but +you should instead set "Protocol" like this: + + Option "Protocol" "alps" + + +On some (all?) ALPS hardware, it is not possible to disable tapping +unless you apply the patch below. However, some users have reported +that this patch breaks tap-and-drag operations, which is why the patch +is not included in the main alps.patch file. + +--- linux/drivers/input/mouse/alps.c~alps-test3 2004-02-28 20:46:34.000000000 +0100 ++++ linux-petero/drivers/input/mouse/alps.c 2004-02-28 20:49:12.000000000 +0100 +@@ -87,6 +87,10 @@ static void ALPS_process_packet(struct p + y = (packet[4] & 0x7f) | ((packet[3] & 0x70)<<(7-4)); + z = packet[5]; + ++ if (packet[2] & 1) { ++ z = 35; ++ } ++ + if (z > 0) { + input_report_abs(dev, ABS_X, x); + input_report_abs(dev, ABS_Y, y); +@@ -97,7 +101,6 @@ static void ALPS_process_packet(struct p + if (z > 30) input_report_key(dev, BTN_TOUCH, 1); + if (z < 25) input_report_key(dev, BTN_TOUCH, 0); + +- left |= (packet[2] ) & 1; + left |= (packet[3] ) & 1; + right |= (packet[3] >> 1) & 1; + if (packet[0] == 0xff) { --- xserver-xorg-input-synaptics-1.6.2.orig/debian/xserver-xorg-input-synaptics.docs +++ xserver-xorg-input-synaptics-1.6.2/debian/xserver-xorg-input-synaptics.docs @@ -0,0 +1,3 @@ +README +docs/README.alps +docs/trouble-shooting.txt --- xserver-xorg-input-synaptics-1.6.2.orig/debian/xserver-xorg-input-synaptics.README.Debian +++ xserver-xorg-input-synaptics-1.6.2/debian/xserver-xorg-input-synaptics.README.Debian @@ -0,0 +1,98 @@ +xserver-xorg-input-synaptics for Debian +--------------------------------------- + +This package contains the Synaptics TouchPad driver for X.Org X server. +See also the README file for details on configuration options. + + +Runtime configuration +--------------------- + +The synclient and xinput tools allow configuring various aspects of the +driver's behaviour. See the synaptics(4) man page for details of the +configurable options. + + +Manual configuration +-------------------- + +1. Load the driver by changing the X.Org configuration file +(/etc/X11/xorg.conf) through adding the line 'Load +"synaptics"' in the module section. + +2. Add/Replace in the InputDevice section for the touchpad the +following lines: + +Section "InputDevice" + Driver "synaptics" + Identifier "touchpad" + Option "Device" "/dev/psaux" + Option "Protocol" "auto-dev" +# +# Following lines are optional thus commented in this example. +# Please read the synaptics(4) manpage for a detailed explanation +# of the various options' meaning as well as a full list of options +# +# Option "LeftEdge" "1700" +# Option "RightEdge" "5300" +# Option "TopEdge" "1700" +# Option "BottomEdge" "4200" +# Option "FingerLow" "25" +# Option "FingerHigh" "30" +# Option "MaxTapTime" "180" +# Option "MaxTapMove" "220" +# Option "VertScrollDelta" "100" +# Option "MinSpeed" "0.06" +# Option "MaxSpeed" "0.12" +# Option "AccelFactor" "0.0010" +# Option "Repeater" "/dev/ps2mouse" +EndSection + +Change the Identifier to the same name as in the ServerLayout section. +The Option "Repeater" is at the moment for testing. + +3. Add the "CorePointer" option to the InputDevice line at the ServerLayout section: + +Section "ServerLayout" +... + InputDevice "touchpad" "CorePointer" + InputDevice "USB Mouse" "SendCoreEvents" +... + + Note! You can not have more than one core pointer, so if you want + to use an external mouse too, you have to set all mouse input + devices except one to "AlwaysCore" instead of "CorePointer". + +4. Start/Restart the X Server. If the touchpad doesn't work: + a) Check the X.Org Logfiles + b) Try to start the XServer with 'startx -- -logverbose 8' for more + Output + +Other relevant information to use this driver +--------------------------------------------- + +1. For use with kernel 2.6.x you need to enable synaptics touchpad + support when configuring the kernel (CONFIG_MOUSE_PS2). You also + need support for the evdev interface (CONFIG_INPUT_EVDEV). If you + compile evdev as a module, make sure it is loaded before starting + the X server, as it will not be auto-loaded. + +2. For use with an ALPS touchpad, you need to use a 2.6.x kernel and + apply the alps patch. See the README.alps file for more details. + Note! If you use kernel 2.6.11 or later, the alps patch is already + included, so you don't have to patch your kernel. + +3. Using with kernel 2.4.x for x < 10 needs a kernel patch + (pc_keyb.c.diff.2.4.3). + +Running 'syndaemon' automatically +--------------------------------- +The easiest way to run the syndaemon binary each time you startup X you can +simply add the following line to your ~/.xinitrc file: + +/usr/bin/syndaemon -i 1 -d + +Customize the daemon options to fit your needs, the only mandatory option is +'-d' to run syndaemon in the background. See 'man 1 syndaemon' for more. + + -- Mattia Dongili , Mon, 11 May 2009 23:04:40 +0900 --- xserver-xorg-input-synaptics-1.6.2.orig/debian/xserver-xorg-input-synaptics.links +++ xserver-xorg-input-synaptics-1.6.2/debian/xserver-xorg-input-synaptics.links @@ -0,0 +1 @@ +usr/share/bug/xserver-xorg-core/script usr/share/bug/xserver-xorg-input-synaptics/script --- xserver-xorg-input-synaptics-1.6.2.orig/debian/copyright +++ xserver-xorg-input-synaptics-1.6.2/debian/copyright @@ -0,0 +1,67 @@ +This package was debianized by Mattia Dongili on +Tue, 2 Mar 2004 11:42:05 +0100. + +It was downloaded from +git://anongit.freedesktop.org/git/xorg/driver/xf86-input-synaptics. +Release tarballs are available at +http://xorg.freedesktop.org/releases/individual/driver/ + +Copyright (c) 1997 C. Scott Ananian +Copyright (c) 1998-2000 Bruce Kalk +Copyright (c) 1999 Henry Davies +Copyright (c) 2001 Stefan Gmeiner +Copyright (c) 2002 Linuxcare Inc. David Kennedy +Copyright (c) 2003 Fred Hucht +Copyright (c) 2003 Neil Brown +Copyright (c) 2003 Jörg Bösner +Copyright (c) 2003 Hartwig Felger +Copyright (c) 2002-2007 Peter Osterlund +Copyright (c) 2004 Arne Schwabe +Copyright (c) 2004 Matthias Ihmig +Copyright (c) 2004 Alexei Gilchrist +Copyright (c) 2006-2007 Christian Thaeter +Copyright (c) 2006 Stefan Bethge +Copyright (c) 2007 Joseph P. Skudlarek +Copyright (c) 2007 Florian Loitsch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Some patches included in the Debian package are licensed differently: + debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch + debian/patches/02-autodetect-resolution.patch + +Copyright (c) Matthew Garrett + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + MA 02110-1301, USA. + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL-2'. + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/NEWS +++ xserver-xorg-input-synaptics-1.6.2/debian/NEWS @@ -0,0 +1,29 @@ +xserver-xorg-input-synaptics (1.2.0-1) unstable; urgency=low + + * All the shared memory code has been removed from synclient and syndaemon. + The SHMConfig option is still available but the only use is for monitoring + the hardware state data. + If you have any script that changes the synaptics driver configuration + make sure that you don't use the -s option to synclient. + + -- Mattia Dongili Fri, 20 Nov 2009 00:32:58 +0900 + +xserver-xorg-input-synaptics (1.1.1~git20090510-1) unstable; urgency=low + + * Tapping has been disabled by default on many touchpads by upstream, see + the "NOTES" section in the synaptics(4) manpage for a short overview + about how defaults are calculated. + If you want to re-enable it, you can do so from within the X + environment by running the following commands in a terminal: + + $ synclient TapButton1=1 + $ synclient TapButton2=2 + $ synclient TapButton3=3 + + Note that the configuration will not be permanently modified, to do + so assign the above option values in your xorg.conf (see the synaptics(4) + manpage or the documents in /usr/share/doc/xserver-xorg-input-synaptics + for additional details). Another alternative is to use desktop + environment specific tools like gpointing-device-settings or touchfreeze. + + -- David Nusinow Sat, 11 Apr 2009 16:23:11 -0400 --- xserver-xorg-input-synaptics-1.6.2.orig/debian/xserver-xorg-input-synaptics.postinst.in +++ xserver-xorg-input-synaptics-1.6.2/debian/xserver-xorg-input-synaptics.postinst.in @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +THIS_PACKAGE=xserver-xorg-input-synaptics +THIS_SCRIPT=postinst + +#INCLUDE_SHELL_LIB# + +case "$1" in + configure) + if dpkg --compare-versions "$2" lt 1.4.1-1ubuntu2; then + if [ `uname -s` = "Linux" ]; then + udevadm trigger --subsystem-match=input --action=change + fi + fi +esac + +#DEBHELPER# + +exit 0 + +# vim:set ai et sw=2 ts=2 tw=80: --- xserver-xorg-input-synaptics-1.6.2.orig/debian/xserver-xorg-input-synaptics-dev.install +++ xserver-xorg-input-synaptics-1.6.2/debian/xserver-xorg-input-synaptics-dev.install @@ -0,0 +1,2 @@ +usr/include/xorg/* +usr/lib/pkgconfig/xorg-synaptics.pc --- xserver-xorg-input-synaptics-1.6.2.orig/debian/compat +++ xserver-xorg-input-synaptics-1.6.2/debian/compat @@ -0,0 +1 @@ +8 --- xserver-xorg-input-synaptics-1.6.2.orig/debian/rules +++ xserver-xorg-input-synaptics-1.6.2/debian/rules @@ -0,0 +1,17 @@ +#!/usr/bin/make -f + +# Install in debian/tmp to retain control through dh_install: +override_dh_auto_install: + dh_auto_install --destdir=debian/tmp + +# Kill *.la files, and forget no-one: +override_dh_install: + find debian/tmp -name '*.la' -delete + dh_install --fail-missing + +# That's a plugin, use appropriate warning level: +override_dh_shlibdeps: + dh_shlibdeps -- --warnings=6 + +%: + dh $@ --with quilt,autoreconf,xsf --builddirectory=build/ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/xserver-xorg-input-synaptics.install +++ xserver-xorg-input-synaptics-1.6.2/debian/xserver-xorg-input-synaptics.install @@ -0,0 +1,6 @@ +usr/lib/xorg/modules/input/*.so +usr/bin/* +usr/share/man +usr/share/X11 +debian/local/51-synaptics-quirks.conf usr/share/X11/xorg.conf.d +debian/local/66-xorg-synaptics-quirks.rules lib/udev/rules.d --- xserver-xorg-input-synaptics-1.6.2.orig/debian/control +++ xserver-xorg-input-synaptics-1.6.2/debian/control @@ -0,0 +1,72 @@ +Source: xserver-xorg-input-synaptics +Section: x11 +Priority: optional +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: Mattia Dongili , Cyril Brulebois +Build-Depends: + debhelper (>= 8), + dh-autoreconf, + libx11-dev, + libxext-dev, + libxi-dev (>= 2:1.2.0), + x11proto-core-dev, + xserver-xorg-dev (>= 2:1.11.3-0ubuntu1), + pkg-config, + quilt, + xutils-dev (>= 1:7.5+4), + x11proto-input-dev (>= 2.1.99.5), + libmtdev-dev [linux-any], +Build-Conflicts: + libxtst-dev +Standards-Version: 3.9.3 +Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-input-synaptics +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-input-synaptics.git + +Package: xserver-xorg-input-synaptics +Architecture: any +Depends: + udev [linux-any], + ${shlibs:Depends}, + ${xinpdriver:Depends}, + ${misc:Depends}, +Conflicts: xorg-driver-synaptics +Replaces: xorg-driver-synaptics +Provides: ${xinpdriver:Provides}, xorg-driver-synaptics +Suggests: gpointing-device-settings, touchfreeze +Description: Synaptics TouchPad driver for X.Org server + This package provides an input driver for the X.Org X server to enable + advanced features of the Synaptics Touchpad including: + . + * Movement with adjustable, non-linear acceleration and speed + * Button events through short touching of the touchpad + * Double-Button events through double short touching of the touchpad + * Dragging through short touching and holding down the finger on the touchpad + * Middle and right button events on the upper and lower corner of the touchpad + * Vertical scrolling (button four and five events) through moving the finger + on the right side of the touchpad + * The up/down button sends button four/five events + * Horizontal scrolling (button six and seven events) through moving the finger + on the lower side of the touchpad + * The multi-buttons send button four/five events, and six/seven events for + horizontal scrolling + * Adjustable finger detection + * Multifinger taps: two finger for middle button and three finger for right + button events. (Needs hardware support. Not all models implement this + feature.) + * Run-time configuration using shared memory. This means you can change + parameter settings without restarting the X server (see synclient(1)). + * It also provides a daemon to disable touchpad while typing at the keyboard + and thus avoid unwanted mouse movements (see syndaemon(1)). + . + +Package: xserver-xorg-input-synaptics-dev +Section: libdevel +Architecture: all +Depends: + x11proto-core-dev, + ${misc:Depends}, +Description: Synaptics TouchPad driver for X.Org server (development headers) + This package contains the development headers for the Synaptics input + driver found in xserver-xorg-input-synaptics. Non-developers likely have + little use for this package. --- xserver-xorg-input-synaptics-1.6.2.orig/debian/README.source +++ xserver-xorg-input-synaptics-1.6.2/debian/README.source @@ -0,0 +1,49 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. --- xserver-xorg-input-synaptics-1.6.2.orig/debian/watch +++ xserver-xorg-input-synaptics-1.6.2/debian/watch @@ -0,0 +1,3 @@ +#git=git://anongit.freedesktop.org/xorg/driver/xf86-input-synaptics +version=3 +http://xorg.freedesktop.org/releases/individual/driver/ xf86-input-synaptics-(.*)\.tar\.gz --- xserver-xorg-input-synaptics-1.6.2.orig/debian/changelog +++ xserver-xorg-input-synaptics-1.6.2/debian/changelog @@ -0,0 +1,1662 @@ +xserver-xorg-input-synaptics (1.6.2-1ubuntu1~precise2) precise-proposed; urgency=low + + * Added 130_reset-num_active_touches-on-deviceoff.patch (LP: #956071) + + -- Timo Aaltonen Thu, 30 Aug 2012 20:32:12 +0300 + +xserver-xorg-input-synaptics (1.6.2-1ubuntu1~precise1) precise-proposed; urgency=low + + * Fixes memory corruption by driver (LP: #941953) FDo #49439 + * Fixes 'Coasting Direction is incorrect for negative VertScrollDelta/HorizScrollDelta' + * Fixes jumpy cursor after suspend/resume + * Fixes another resume bug + * Fixes division by 0 or infinite loop with zero scroll distance FDo #49965 + * Merged from Debian unstable + * Removed patches that were cherry picked commits and now in 1.6.2: + - 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch + - 202-Ignore-pre-existing-touches.patch + - 203-Fix-coasting-for-negative-ScrollDelta.patch + - 204-Reset-open-slots-array-on-device-disable.patch + - 205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch + - 206-Don-t-allow-for-scroll-distances-of-0-49965.patch + * Remaining patches: + - 101_resolution_detect_option.patch + - 103_enable_cornertapping.patch + - 104_always_enable_tapping.patch + - 106_always_enable_vert_edge_scroll.patch + - 115_evdev_only.patch + - 118_quell_error_msg.patch + - 124_syndaemon_events.patch + - 125_option_rec_revert.patch + - 126_ubuntu_xi22.patch + - 128_disable_three_click_action.patch + - 129_disable_three_touch_tap.patch + * Reinstate patch for (LP: #972727) due to feature freeze in precise + + -- Maarten Lankhorst Thu, 14 Jun 2012 09:35:21 +0200 + +xserver-xorg-input-synaptics (1.6.2-1) unstable; urgency=low + + * New upstream release, from the 1.6 branch. + + -- Cyril Brulebois Wed, 13 Jun 2012 22:22:42 +0200 + +xserver-xorg-input-synaptics (1.6.1-1ubuntu2) quantal-proposed; urgency=low + + * Enable right button clickpad area by default (LP: #972727) + - Upstream has this enabled. We had it disabled for Precise due to the + feature landing well after feature freeze. This change puts us back in + sync with upstream. + + -- Chase Douglas Thu, 07 Jun 2012 10:07:18 -0700 + +xserver-xorg-input-synaptics (1.6.1-1ubuntu1) quantal; urgency=low + + * Merged from Debian unstable + * Refreshed patches for indentation changes + - 101_resolution_detect_option.patch + - 118_quell_error_msg.patch + - 124_syndaemon_events.patch + - 125_option_rec_revert.patch + * Add temporary patches, for upstream git commits on synaptics-1.6-branch + * Fix memory corruption by driver (LP: #941953) FDo #49439 + - 201-Avoid-out-of-bounds-access-by-running-num_active_tou.patch + - 202-Ignore-pre-existing-touches.patch + * Fix FDo #49966 + - 203-Fix-coasting-for-negative-ScrollDelta.patch + * Fix jumpy cursor after suspend/resume + - 204-Reset-open-slots-array-on-device-disable.patch + * Fix another resume bug + - 205-Reset-hw-x-y-to-INT_MIN-and-skip-HandleState-until-w.patch + * Fix division by 0 or infinite loop with zero scroll distance FDo #49965 + - 206-Don-t-allow-for-scroll-distances-of-0-49965.patch + + -- Maarten Lankhorst Mon, 21 May 2012 14:14:49 +0200 + +xserver-xorg-input-synaptics (1.6.1-1) unstable; urgency=low + + [ Julien Cristau ] + * The mtdev build-dep is linux-only (closes: #672572). Thanks, Pino + Toscano! + + [ Cyril Brulebois ] + * New upstream release, from the 1.6 branch. + + -- Cyril Brulebois Sun, 20 May 2012 16:50:18 +0200 + +xserver-xorg-input-synaptics (1.6.0-1) unstable; urgency=low + + * New upstream release. + + -- Cyril Brulebois Mon, 07 May 2012 01:13:08 +0200 + +xserver-xorg-input-synaptics (1.6.0-0ubuntu1~precise1) precise-proposed; urgency=low + + * Update to upstream version 1.6.0 + - Bug fixes only + - Fully fixes touchpad bugs on suspend/resume (LP: #968845) + * Drop patches merged upstream + - 200_fix_four_tap.patch + - 201_fix_touch_count.patch + - 202_touch_record_bounds_check.patch + - 203_fix_coasting_speed.patch + - 204_monotonicise_hw_timestamp.patch + - 205_end_touches_on_disable.patch + * Refreshed 130_dont_enable_rightbutton_area.patch + + -- Chase Douglas Mon, 07 May 2012 12:31:21 -0700 + +xserver-xorg-input-synaptics (1.5.99.904-2) unstable; urgency=low + + * Add a build-dep on libmtdev-dev now that X server 1.12 is in sid, + for XI 2.2 support. + + -- Cyril Brulebois Tue, 01 May 2012 15:02:43 +0200 + +xserver-xorg-input-synaptics (1.5.99.904-1) unstable; urgency=low + + * New upstream release candidate (1.6 RC4). + + -- Cyril Brulebois Fri, 27 Apr 2012 19:52:44 +0000 + +xserver-xorg-input-synaptics (1.5.99.902-1) unstable; urgency=low + + * New upstream release candidate (1.6 RC2). + + -- Cyril Brulebois Mon, 02 Apr 2012 01:12:26 +0000 + +xserver-xorg-input-synaptics (1.5.99.902-0ubuntu5.1) precise-proposed; urgency=low + + * debian/patches/204_monotonicise_hw_timestamp.patch: + - Cherry-pick patch from upstream to ensure the timestamps used when + determining velocities are monotonic. In certain circumstances the + timestamps from hardware events can be less than the timestamps + from the preceeding artificially-generated events. + + Fixes occasional huge jumps in pointer position. + + Fixes two-finger scrolling in GTK+3 windows (such as Nautilus and + Evolution) failing some time after login. (LP: #982771) + * debian/patches/205_end_touches_on_disable.patch: + - Upstream patch to reset touch state on device disable. + + Fixes touchpad not working after suspend on some MacBook models + (LP: #968845) + + -- Christopher James Halse Rogers Tue, 24 Apr 2012 14:32:49 +1000 + +xserver-xorg-input-synaptics (1.5.99.902-0ubuntu5) precise-proposed; urgency=low + + * Fix coasting speed on multitouch touchpads (LP: #930938) + - Add patch 203_fix_coasting_speed.patch + + -- Chow Loong Jin Fri, 13 Apr 2012 16:14:04 +0800 + +xserver-xorg-input-synaptics (1.5.99.902-0ubuntu4) precise; urgency=low + + * Fix crash on Apple trackpads when touching with more than 10 fingers + (LP: #974017) + - Add temporary patch 202_touch_record_bounds_check.patch + + -- Chase Douglas Mon, 09 Apr 2012 11:44:26 -0700 + +xserver-xorg-input-synaptics (1.5.99.902-0ubuntu3) precise; urgency=low + + * Fix bad default for two touch tap as middle button click (LP: #973783) + - Fixed 104_always_enable_tapping.patch + - Refreshed 129_disable_three_touch_tap.patch + + -- Chase Douglas Wed, 04 Apr 2012 14:42:34 -0700 + +xserver-xorg-input-synaptics (1.5.99.902-0ubuntu2) precise; urgency=low + + * Fix three touch taps and clicks on some trackpads (LP: #971783) + - Add temporary patch 201_fix_touch_count.patch + + -- Chase Douglas Mon, 02 Apr 2012 11:33:58 -0700 + +xserver-xorg-input-synaptics (1.5.99.902-0ubuntu1) precise; urgency=low + + * New upstream release + * Drop patches merged upstream + - 200_fix_clickfinger_non-clickpads.patch + - 201_fix_clickfinger_clickpad_actions.patch + * Revert upstream behavior change: enabling right button area by default + - Too late to enable in Precise + * Fix erroneous tap actions on four-touch tap (LP: #963327) + - Add temporary patch 200_fix_four_tap.patch + + -- Chase Douglas Thu, 29 Mar 2012 15:31:40 -0700 + +xserver-xorg-input-synaptics (1.5.99.901-1) unstable; urgency=low + + * New upstream release candidate (1.6 RC1): + - Add support for ClickPads. + * Multitouch isn't enabled yet (it would require a newer server anyway). + + -- Cyril Brulebois Tue, 20 Mar 2012 21:40:10 +0000 + +xserver-xorg-input-synaptics (1.5.99.901-0ubuntu2) precise; urgency=low + + * Disable three touch tap in favor of uTouch gestures (LP: #961725) + - See + https://lists.ubuntu.com/archives/ubuntu-desktop/2012-February/003694.html + for details. + - Add 129_disable_three_touch_tap.patch + * Fix click actions for non-clickpad touchpads (LP: #960108) + - Add temporary patch 200_fix_clickfinger_non-clickpads.patch + * Fix click action finger count calculation (LP: #961738) + - Add temporary patch 201_fix_clickfinger_clickpad_actions.patch + + -- Chase Douglas Wed, 21 Mar 2012 16:00:26 -0700 + +xserver-xorg-input-synaptics (1.5.99.901-0ubuntu1) precise; urgency=low + + * New upstream release + - Includes ClickPad support + - Fixes ClickPad click action interference + - Re-enables ClickPad support by default (LP: #955404) + - Everything else is bug fixes + * Remove 129_clickpad.patch, it has been merged upstream + * Bump lintian standards to 3.9.3 + + -- Chase Douglas Thu, 15 Mar 2012 17:58:09 -0700 + +xserver-xorg-input-synaptics (1.5.99~git20120223-0ubuntu2) precise; urgency=low + + * Disable ClickPad support when there is no physical right button + (LP: #941046) + - This re-enables click actions, which was enabled by default previously + - Users can enable ClickPad support through xorg.conf, xinput, or synclient + - See + https://lists.ubuntu.com/archives/ubuntu-desktop/2012-February/003751.html + for the discussion guiding this change. + * Refresh ClickPad support patch with changes from upstream review + - No new functionality + * Remove bottom area mask for Dell netbook clickpads with two buttons + + -- Chase Douglas Fri, 02 Mar 2012 13:33:26 -0700 + +xserver-xorg-input-synaptics (1.5.99~git20120223-0ubuntu1) precise; urgency=low + + * Update to latest code in git (0a2fd56) + - Only includes bug fixes + * Drop temporary patches that have been merged upstream: + - 129_tmp_pointer_drift.patch + - 130_tmp_touch_count_fix.patch + * Revert tap-and-drag locking default change (LP: #934770) + - Drop 127_default_drag_lock.patch + * Add ClickPad support (LP: #932947) + - Add 129_clickpad.patch + + -- Chase Douglas Thu, 23 Feb 2012 11:54:37 -0800 + +xserver-xorg-input-synaptics (1.5.99~git20120220-0ubuntu3) precise; urgency=low + + * Fix crash on multitouch devices when disabled while typing (LP: #931344) + - Add temporary patch 130_tmp_touch_count_fix.patch + + -- Chase Douglas Tue, 21 Feb 2012 16:22:17 +0100 + +xserver-xorg-input-synaptics (1.5.99~git20120220-0ubuntu2) precise; urgency=low + + * Prevent trackpad pointer drift (LP: #921082) + - Add temporary patch 129_tmp_pointer_drift.patch from upstream + + -- Chase Douglas Mon, 20 Feb 2012 11:55:23 +0100 + +xserver-xorg-input-synaptics (1.5.99~git20120220-0ubuntu1) precise; urgency=low + + * Update to latest code in git (f9a9065) + - Scale single-touch values to multitouch axes (LP: #936856) + + -- Chase Douglas Mon, 20 Feb 2012 11:13:10 +0100 + +xserver-xorg-input-synaptics (1.5.0+git20120210-0ubuntu2) precise; urgency=low + + * Enable tap-and-drag locked drags by default + * Disable three-click action by default so three touch gestures work + + -- Chase Douglas Mon, 13 Feb 2012 20:51:56 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120210-0ubuntu1) precise; urgency=low + + * Update to latest code in git (e6032c3) + * Drop 127_multitouch.patch, merged upstream + * Drop 126_default_speed.patch, no longer necessary + * Refresh 125_option_rec_revert.patch + * Add 126_ubuntu_xi22.patch for ubuntu frankenserver support + + -- Chase Douglas Fri, 10 Feb 2012 18:27:53 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120101-1ubuntu2) precise; urgency=low + + * Add some error handling so eventcomm-test doesn't segfault + - Modified 127_multitouch.patch + + -- Chase Douglas Thu, 19 Jan 2012 17:44:47 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120101-1ubuntu1) precise; urgency=low + + * Add multitouch support + - Add 127_multitouch.patch + * Bump Build-Depends for x11proto-input-dev to 2.1.99.5 + * Remove obsolete dependencies on utouch-grail and old xserver-xorg-core + + -- Chase Douglas Thu, 19 Jan 2012 16:39:31 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120101-1ubuntu1~nomt3) precise; urgency=low + + * Fix default speed due to change in motion estimation + - Add 126_default_speed.patch + + -- Chase Douglas Thu, 12 Jan 2012 03:59:25 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120101-1ubuntu1~nomt2) precise; urgency=low + + * Drop patch 122_revert_pressure_finger_default.patch, merged upstream + + -- Chase Douglas Mon, 09 Jan 2012 07:03:52 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120101-1ubuntu1~nomt1) precise; urgency=low + + * Lower xserver-xorg-dev build dep for Precise's X server + * Revert xf86OptionRec upstream changes + - This particular API change will not be in Precise's X server + + -- Chase Douglas Mon, 09 Jan 2012 07:00:49 -0800 + +xserver-xorg-input-synaptics (1.5.0+git20120101-1) experimental; urgency=low + + * New upstream snapshot: + - Merge from upstream master up to 9f9b55ab55. + * Build against Xserver 1.12 RC1. + + -- Cyril Brulebois Sun, 01 Jan 2012 07:54:51 +0100 + +xserver-xorg-input-synaptics (1.5.0-2ubuntu1~nomt1) UNRELEASED; urgency=low + + * Merge from Debian testing. Remaining Ubuntu changes: + - 101_resolution_detect_option.patch: + + Provide an option to prevent synaptics from communicating the + touchpad size to the xserver. (LP: 327428) + - 103_enable_cornertapping.patch: + + Enable right/middle clicks by tapping in the bottom- and top-right + corners. + - 104_always_enable_tapping.patch: + + Enable tapping regardless of the presence of physical buttons. + - 106_always_enable_vert_edge_scroll.patch: + + Enable vertical edge tapping by default even if we enable two-finger + scrolling as well. + - 115_evdev_only.patch: + + Only bind to /dev/input/event* evdev devices (LP 624985) + - 118_quell_error_msg.patch: + + Don't print error "Unable to find a synaptics device" when used + on system that doesn't have a touchpad anyway. (LP: 716712) + - 122_revert_pressure_finger_default.patch: + + Fix spurious right click events on some trackpads (LP: 742213) + - 124_syndaemon_events.patch: + + Drain spurious events from XRecord connection as a work around + for a buggy X server. (LP: 754470) + - debian/control: + + Depend on udev. + + Move libxtst-dev to Build-Conflicts so syndaemon does not use XRecord, + preventing a wide range of crashes in _CallCallbacks. (LP: 774978) + - debian/gbp.conf: + + Specify ‘ubuntu’ branch. + - debian/local/51-synaptics-quirks.conf: + + Split out our synaptics quirks into 51-synaptics-quirks.conf + - debian/local/66-xorg-synaptics.rules: + + Add the udev rule back for tagging specific machines to be quirked. + - debian/xserver-xorg-input-synaptics.postinst.in: + + Trigger udev to pick up new udev rules + * Temporarily drop multitouch patches for X server 1.11 bringup: + + 116_xi2_1.patch + + 117_gestures.patch + + 119_active_area_touches.patch + + 120_active_touches_num_fingers.patch + + 121_semi-mt_num_fingers.patch + + 123_order_ProcessTouch_for_numFingers.patch + * debian/patches/122_revert_pressure_finger_default.patch: + + Refresh for new upstream + + -- Christopher James Halse Rogers Mon, 19 Dec 2011 11:10:25 +1100 + +xserver-xorg-input-synaptics (1.5.0-2) unstable; urgency=low + + * Cherry-pick to fix regression on powerpc (Closes: #649002): + - b7e65f04f: Revert the switch from TEST_BIT to BitIsOn. + + -- Cyril Brulebois Mon, 12 Dec 2011 13:28:36 +0100 + +xserver-xorg-input-synaptics (1.5.0-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + -- Cyril Brulebois Fri, 11 Nov 2011 17:15:22 +0100 + +xserver-xorg-input-synaptics (1.4.1-1ubuntu2) oneiric; urgency=low + + * Really install the quirks files, and rename the udev rules file + to emphasize that it's about quirks. + * postinst: Bump the version check to run udevadm trigger on upgrade. + + -- Timo Aaltonen Thu, 29 Sep 2011 22:16:55 +0300 + +xserver-xorg-input-synaptics (1.4.1-1ubuntu1) oneiric; urgency=low + + * Merge from Debian unstable, remaining changes: + - 101_resolution_detect_option.patch: + + Provide an option to prevent synaptics from communicating the + touchpad size to the xserver. (LP: 327428) + - 103_enable_cornertapping.patch: + + Enable right/middle clicks by tapping in the bottom- and top-right + corners. + - 104_always_enable_tapping.patch: + + Enable tapping regardless of the presence of physical buttons. + - 106_always_enable_vert_edge_scroll.patch: + + Enable vertical edge tapping by default even if we enable two-finger + scrolling as well. + - 115_evdev_only.patch: + + Only bind to /dev/input/event* evdev devices (LP 624985) + - 116_xi2_1.patch: + - 117_gestures.patch: + + multitouch and uTouch gesture support + - 118_quell_error_msg.patch: + + Don't print error "Unable to find a synaptics device" when used + on system that doesn't have a touchpad anyway. (LP: 716712) + - 119_active_area_touches.patch: + - 120_active_touches_num_fingers.patch: + - 121_semi-mt_num_fingers.patch: + + Fix handling for SemiMultitouch trackpads with integrated buttons + (LP: 736523) + - 122_revert_pressure_finger_default.patch: + + Fix spurious right click events on some trackpads (LP: 742213) + - 123_order_ProcessTouch_for_numFingers.patch: + + Fix jumpy cursor on multitouch trackpads (LP: 751525) + - 124_syndaemon_events.patch: + + Drain spurious events from XRecord connection as a work around + for a buggy X server. (LP: 754470) + - debian/control: + + Add depends on libmtdev and libutouch-grail + + Build-depend on multitouch-enabled inputproto. + + Depend on multitouch-enabled xserver. + + Depend on udev. + + Move libxtst-dev to Build-Conflicts so syndaemon does not use XRecord, + preventing a wide range of crashes in _CallCallbacks. (LP: 774978) + - debian/gbp.conf: + + Specify ‘ubuntu’ branch. + - debian/local/51-synaptics-quirks.conf: + + Split out our synaptics quirks into 51-synaptics-quirks.conf + - debian/local/66-xorg-synaptics.rules: + + Add the udev rule back for tagging specific machines to be quirked. + - debian/xserver-xorg-input-synaptics.postinst.in: + + Trigger udev to pick up new udev rules + * Drop 114_jumpy_cursor_first_part.patch, fixed upstream. + * Update 115_evdev_only.patch to apply. + * Update 117_gestures.patch to apply. + + -- Timo Aaltonen Tue, 05 Jul 2011 16:40:31 +0300 + +xserver-xorg-input-synaptics (1.4.1-1) unstable; urgency=low + + * New upstream release: + - Fix some typos in documentation (Closes: #622663). + - Fix “syndaemon consumes 100% CPU” (LP: #754470). + * Bump Standards-Version to 3.9.2 (no changes). + * Refresh patch: + - 02-do-not-use-synaptics-for-keyboards.patch to cope with the lines + removed in d25ba5e11d. + * Drop patch: + - 03-man-no-hal.patch, superseded by upstream commit e49d5d07c7. + + -- Cyril Brulebois Tue, 28 Jun 2011 15:38:13 +0200 + +xserver-xorg-input-synaptics (1.4.0-1) unstable; urgency=low + + * New upstream release: + + Fix the FTBFS on GNU/kFreeBSD. + + -- Cyril Brulebois Sat, 05 Mar 2011 16:26:01 +0100 + +xserver-xorg-input-synaptics (1.3.99.901-1) unstable; urgency=low + + * New upstream release. + * Disable patch: 01-synaptics-dont-grab-if-not-on-current-VT.patch (no + longer applies, needs to be sent/discussed upstream anyway). + + -- Cyril Brulebois Mon, 21 Feb 2011 04:27:15 +0100 + +xserver-xorg-input-synaptics (1.3.0-2) unstable; urgency=low + + * Switch to Architecture: any, adding armhf support (Closes: #604672). + * Switch to dh: + - Use debhelper 8. + - Use dh-autoreconf. + - Bump xserver-xorg-dev build-dep for dh_xsf_substvars and xsf + debhelper sequence. + * Remove xsfbs accordingly. + * Get rid of xfree86-* packages in Conflicts/Replaces/Provides. + * Bump Standards-Version to 3.9.1 (no changes needed). + + -- Cyril Brulebois Sat, 05 Feb 2011 14:40:47 +0100 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu15) oneiric; urgency=low + + * Also build-conflict with libxtst-dev as to make sure it's not present in + e.g. local debug builds. + + -- Loïc Minier Fri, 10 Jun 2011 18:01:59 +0200 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu14) oneiric; urgency=low + + * Drop libxtst-dev build dependency so syndaemon does not use XRecord, + preventing a wide range of crashes in _CallCallbacks. (LP: #774978) + + -- Robert Hooker Mon, 23 May 2011 10:13:09 -0400 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu13) oneiric; urgency=low + + * Re-add 116_resolution_detect_option.patch as 101_resolution_detect_option.patch: + - This patch was introduced in 1.2.2-2ubuntu7 but got erroneously dropped in the + merge for 1.3.99+git20110116.0e27ce3a-0ubuntu1. + (LP: #327428) + + -- Bryce Harrington Fri, 20 May 2011 11:14:44 -0700 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu12) natty; urgency=low + + * syndaemon: Drain spurious events from XRecord connection as a work around + for a buggy X server. This keeps syndaemon from busy looping + (LP: #754470) + + -- Chase Douglas Thu, 14 Apr 2011 14:15:33 -0400 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu11) natty; urgency=low + + * Fix jumpy cursor on multitouch trackpads (LP: #751525) + - Added 123_order_ProcessTouch_for_numFingers.patch + + -- Chase Douglas Tue, 05 Apr 2011 11:03:12 -0400 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu10) natty; urgency=low + + * Ensure touch mask exists before clearing it (LP: #747126) + + -- Chase Douglas Fri, 01 Apr 2011 08:40:59 -0400 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu9) natty; urgency=low + + * Fix handling for SemiMultitouch trackpads with integrated buttons + (LP: #736523) + - Added 119_active_area_touches.patch + - Added 120_active_touches_num_fingers.patch + - Added 121_semi-mt_num_fingers.patch + * Fix spurious right click events on some trackpads (LP: #742213) + - Added 122_revert_pressure_finger_default.patch + + -- Chase Douglas Wed, 30 Mar 2011 10:54:50 -0400 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu8) natty; urgency=low + + * Disable SemiMultitouch devices, we don't support them yet (LP: #723905) + + -- Chase Douglas Tue, 15 Mar 2011 16:16:21 -0400 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu7) natty; urgency=low + + * Set event window correctly for global gesture event + (LP: #728696) + + -- Chase Douglas Fri, 04 Mar 2011 15:40:43 -0500 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu6) natty; urgency=low + + * Fix silly typo in patch name + + -- Bryce Harrington Wed, 02 Mar 2011 13:06:17 -0800 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu5) natty; urgency=low + + * Add 118_quell_error_msg.patch: Don't print error "Unable to find a + synaptics device" when used on system that doesn't have a touchpad anyway. + (LP: #716712) + * Renumber patches 200 and 201 to 116 and 117 so are consistent with the + other ubuntu patches. + + -- Bryce Harrington Wed, 02 Mar 2011 12:16:32 -0800 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu4) UNRELEASED; urgency=low + + * Add in xi 2.1 support and uTouch gesture support + - Added 200_xi2.1.patch + - Added 201_gestures.patch + - Add depends on libmtdev and libutouch-grail + + -- Chase Douglas Sun, 20 Feb 2011 19:23:11 -0500 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu3) natty; urgency=low + + * debian/control: Bump build-depend on xserver-xorg-dev to really, really + build against Xserver 1.10 + + -- Christopher James Halse Rogers Tue, 01 Feb 2011 20:46:57 +1100 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu2) natty; urgency=low + + * Rebuild against Xserver 1.10 + + -- Bryce Harrington Mon, 31 Jan 2011 18:37:55 -0800 + +xserver-xorg-input-synaptics (1.3.99+git20110116.0e27ce3a-0ubuntu1) natty; urgency=low + + [ Cyril Brulebois ] + * Switch to Architecture: any, adding armhf support (Closes: #604672). + + [ Christopher James Halse Rogers ] + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - Split out our synaptics quirks into 51-synaptics-quirks.conf + - Add the udev rule back for tagging specific machines to be quirked + - Trigger udev in postinst to pick up udev rules + - add Depend: on udev + - 103_enable_cornertapping.patch: Enable right/middle clicks by + tapping in the bottom- and top-right corners. + - 104_always_enable_tapping.patch: Enable tapping regardless of the + presence of physical buttons. + - 106_always_enable_vert_edge_scroll.patch: Enable vertical edge + tapping by default even if we enable two-finger scrolling as well. + - 114_jumpy_cursor_first_part.patch: Adds a property to enable filtering + jumpy cursor problems on some machines. + - Specify ‘ubuntu’ branch in gbp.conf + - 115_evdev_only.patch: Only bind to /dev/input/event* evdev devices + (LP 624985) + * Update to git snapshot to fix build against Xserver 1.10 input API + * debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch: + - Refresh for new upstream. + * debian/patches/114_jumpy_cursor_first_part.patch: + - Refresh for new upstream. Drop the multi-touch chunk of the quirk, + as that is handled by upstream commit a6ca4d25. + + -- Christopher James Halse Rogers Tue, 25 Jan 2011 20:01:58 +1100 + +xserver-xorg-input-synaptics (1.3.0-1) experimental; urgency=low + + [ Robert Hooker ] + * New upstream release. + * Bump xutils-dev requirement for new util-macros. + + [ Cyril Brulebois ] + * Remove TODO from xserver-xorg-input-synaptics.docs, dropped upstream. + + -- Cyril Brulebois Fri, 19 Nov 2010 23:49:14 +0100 + +xserver-xorg-input-synaptics (1.2.2-4) experimental; urgency=low + + * Merge xsfbs to get unversioned Provides. + + -- Cyril Brulebois Sat, 16 Oct 2010 14:40:22 +0200 + +xserver-xorg-input-synaptics (1.2.2-3) experimental; urgency=low + + [ Mattia Dongili ] + * add dependency to libxtst-dev to enable XRecord support in + syndaemon (closes: #598834). + + [ Cyril Brulebois ] + * Build against Xserver 1.9.1 rc1. + + -- Cyril Brulebois Wed, 13 Oct 2010 00:26:45 +0200 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu7) natty; urgency=low + + * Add 116_resolution_detect_option.patch: Provide an option to prevent + synaptics from communicating the touchpad size to the xserver. This + can be used to solve problems where differences in touchpad and screen + dimensions cause the mouse pointer to skip pixels when moving. + (LP: #327428) + + -- Bryce Harrington Wed, 01 Dec 2010 17:03:44 -0800 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu6) natty; urgency=low + + * Add quirk for Dell Inspiron 6400 to register taps more reliably. + The touchpad hardware occasionally sends invalid (1, 5855) coords + for taps, which the driver then interprets as a corner tap, which + by default get ignored. Instead of ignoring them, we treat them + as left-button clicks. + (LP #133060) + + -- Bryce Harrington Wed, 01 Dec 2010 12:32:39 -0800 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu5) maverick; urgency=low + + * 115_evdev_only.patch was added but never applied. (LP: #624985) + + -- Chase Douglas Sat, 18 Sep 2010 15:19:21 +0200 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu4) maverick; urgency=low + + [Chase Douglas] + * 115_evdev_only.patch: + - Prevent non-evdev devices from firing the eventcomm AutoDevProbe callback + (LP: #624985) + + -- Bryce Harrington Wed, 15 Sep 2010 16:27:29 -0700 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu3) maverick; urgency=low + + * Rebuild against new Xserver 1.9 ABI + + -- Christopher James Halse Rogers Mon, 09 Aug 2010 21:47:56 +1000 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu2) maverick; urgency=low + + * 51-synaptics-quirks.conf, 66-xorg-synaptics.rules: + - Put back quirk for Inspiron 1120 which was probably lost in a merge. + + -- Alberto Milone Fri, 06 Aug 2010 12:26:59 +0200 + +xserver-xorg-input-synaptics (1.2.2-2ubuntu1) maverick; urgency=low + + [ Robert Hooker ] + * Merge from debian unstable, remaining changes: + - Split out our synaptics quirks into 51-synaptics-quirks.conf + - Add the udev rule back for tagging specific machines to be quirked + - 103_enable_cornertapping.patch: Enable right/middle clicks by + tapping in the bottom- and top-right corners. + - 104_always_enable_tapping.patch: Enable tapping regardless of the + presence of physical buttons. + - 106_always_enable_vert_edge_scroll.patch: Enable vertical edge + tapping by default even if we enable two-finger scrolling as well. + - 114_jumpy_cursor_first_part.patch: Adds a property to enable filtering + jumpy cursor problems on some machines. + * Add a dependency on udev. + + [ Christopher James Halse Rogers ] + * debian/gbp.conf: + - Make git-buildpackage less annoying by specifying “ubuntu” as our debian + branch. + + -- Robert Hooker Mon, 07 Jun 2010 19:07:59 -0400 + +xserver-xorg-input-synaptics (1.2.2-2) unstable; urgency=low + + * Cherry-pick patch from upstream git to add the xorg.conf.d snippet. + * Replace our local copy with that one. + * Build-Depend on new xserver-xorg-dev, which lets us install the snippet to + /usr/share/X11/xorg.conf.d. + * Drop postinst, we don't need to trigger udev anymore. + * Sanitize installation of manpage into the package. + * Update to new xsfbs, use ${xinpdriver:Depends} in debian/control. + * Drop dependency on udev, since we have no udev rules or trigger. + + [ Cyril Brulebois ] + * Add myself to Uploaders. + * Bump Standards-Version from 3.8.3 to 3.8.4 (no changes needed). + + -- Cyril Brulebois Sat, 17 Apr 2010 17:48:26 +0200 + +xserver-xorg-input-synaptics (1.2.2-1ubuntu2) lucid; urgency=low + + * 10-synaptics.conf: Use 'MatchDevicePath "/dev/input/event*"'. + + -- Timo Aaltonen Thu, 01 Apr 2010 14:34:20 +0300 + +xserver-xorg-input-synaptics (1.2.2-1ubuntu1) lucid; urgency=low + + * Merge from Debian unstable. (LP: #546933) + * Rewrite old quirks to use ID_INPUT.tags. + + -- Timo Aaltonen Wed, 31 Mar 2010 00:27:07 +0300 + +xserver-xorg-input-synaptics (1.2.2-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + * Add xserver-xorg-input-synaptics-dev for the header and .pc files. + (LP: #340340) + * Run udevadm trigger on postinst, and depend on udev [linux-any]. + * Add 10-synaptics.conf. + * Drop Ubuntu specific quirks from the udev rules, add a placeholder. + + [ Julien Cristau ] + * Add hurd-i386 to the Architecture field. Requested by Samuel Thibault. + * Drop references to hal from debian/NEWS, README.Debian and synaptics(4) + (closes: #564549). + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + + [ Brice Goglin ] + * Fix reference to the synaptics manpage in README.Debian, + closes: #568628. + + -- Timo Aaltonen Tue, 30 Mar 2010 21:51:15 +0300 + +xserver-xorg-input-synaptics (1.2.1-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + [ Cyril Brulebois ] + * Add ${misc:Depends} to Depends. + * Remove hardcoded libxi6 from Depends, and wrap them. + * Upload to unstable. + + -- Cyril Brulebois Fri, 08 Jan 2010 00:55:04 +0100 + +xserver-xorg-input-synaptics (1.2.0-3ubuntu1) lucid; urgency=low + + * Merge from Debian experimental, remaining changes: + - 103_enable_cornertapping.patch: Enable right/middle clicks by + tapping in the bottom- and top-right corners. + - 104_always_enable_tapping.patch: Enable tapping regardless of the + presence of physical buttons. + - 106_always_enable_vert_edge_scroll.patch: Enable vertical edge + tapping by default even if we enable two-finger scrolling as well. + * Disabled until fixed to apply and work: + - 114_jumpy_cursor_first_part.patch + * Dropped, using udev now: + - 115_jumpy_cursor_second_part.patch + + -- Timo Aaltonen Mon, 07 Dec 2009 22:58:38 +0200 + +xserver-xorg-input-synaptics (1.2.0-3) experimental; urgency=low + + [ Julien Cristau ] + * Install an udev rule instead of an fdi file on linux. + * Build against xserver 1.7 (closes: #549109). + * Add sh4 and kfreebsd-{amd64,i386} to the arch list (closes: #557881, + #559401). + + [ Cyril Brulebois ] + * Upload to experimental. + + -- Cyril Brulebois Sat, 05 Dec 2009 21:27:48 +0100 + +xserver-xorg-input-synaptics (1.2.0-2) unstable; urgency=low + + [ Mattia Dongili ] + * Negate the match on keyboard capabilities in the default fdi file + (closes: #557252). + + -- Mattia Dongili Sat, 21 Nov 2009 13:00:37 +0900 + +xserver-xorg-input-synaptics (1.2.0-1) unstable; urgency=low + + [ Mattia Dongili ] + * Finally package the new upstream release. + * Remove 02-mention-tapping-in-manpage-notes.patch now included upstream. + * All the SHM code has been removed from synclient and syndaemon + (closes: 523652 and closes: 534333 and also closes: #548357). Also add a + note in the NEWS file. + * Do not use the synaptics driver for devices advertising keyboard + capabilities (closes: 524130). + * Refresh patch 01-synaptics-dont-grab-if-not-on-current-VT.patch. + * Add versioned Build-Depends on libxi-dev (closes: #538299). + * The driver now handles duplicate configuration in both an fdi file and + xorg.conf, see http://bugs.freedesktop.org/show_bug.cgi?id=24814 + (closes: #532995). + * Make lintian happier: update Standard-Version and debhelper dependency. + + -- Mattia Dongili Thu, 19 Nov 2009 21:24:49 +0900 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu7) karmic; urgency=low + + * debian/patches: + - 115_jumpy_cursor_second_part.patch: Set AreaBottomEdge to + 4100 for Inspiron 1011 and Inspiron 1012. + + -- Alberto Milone Wed, 14 Oct 2009 16:55:16 +0200 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu6) karmic; urgency=low + + * debian/patches: + - Split 114_jumpy_cursor_threshold.patch into + 114_jumpy_cursor_first_part.patch and + 115_jumpy_cursor_second_part.patch so as to keep options + which belong in the fdi file separate from the code. + - 115_jumpy_cursor_second_part.patch: + + Add quirk for Inspiron 1012. + - Remove 114_jumpy_cursor_threshold.patch_old. + + -- Alberto Milone Mon, 05 Oct 2009 12:09:14 +0200 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu5) karmic; urgency=low + + * Add lpia to the list of Architectures. LP: #413579. + + -- Steve Langasek Mon, 07 Sep 2009 10:44:54 -0700 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu4) karmic; urgency=low + + * debian/patches: + - 112_jumpy_cursor_quirks.patch: + + Drop patch. + - 114_jumpy_cursor_threshold.patch: + + Replace 112_jumpy_cursor_quirks.patch. + + Make the threshold an XInput property. + + Add quirk for Dell Mini10v and for HP Mini 1000 in the + fdi file. + + -- Alberto Milone Wed, 02 Sep 2009 10:44:28 +0200 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu3) karmic; urgency=low + + * debian/patches: + - 112_jumpy_cursor_quirks.patch: Make sure that the quirk + affects only the Dell Mini 10v (LP: #405943). + - 103_enable_cornertapping.patch: Don't trigger middle click + when tapping on the top right corner button (LP: #386017). + + -- Alberto Milone Mon, 17 Aug 2009 10:31:14 +0200 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu2) karmic; urgency=low + + * debian/patches: + - 105_correct_multifinger_click.patch: Drop patch as it breaks + the expected behavior for multitouch clicking (LP: #320585). + - 111_add_active_area.patch: Backport "Synaptics Area" property + from upstream (LP: #402863). + - 112_jumpy_cursor_quirks.patch: Add Quirk for Dell Mini 10v + touchpad (LP: #402863). + - 113_add_capabilities.patch: Backport read-only "Synaptics + Capabilities" property from upstream. + + -- Alberto Milone Wed, 22 Jul 2009 10:42:11 +0200 + +xserver-xorg-input-synaptics (1.1.2-1ubuntu1) karmic; urgency=low + + * Merge from Debian unstable, Remaining changes: + - Restore the Ubuntu patch series. (LP: #378391) + - 103_enable_cornertapping.patch: Enable right/middle clicks by + tapping in the bottom- and top-right corners. + - 104_always_enable_tapping.patch: Enable tapping regardless of the + presence of physical buttons. + - 105_correct_multifinger_click.patch: Swap the right/middle clicks + generated by multi-finger tapping. + - 106_always_enable_vert_edge_scroll.patch: Enable vertical edge + tapping by default even if we enable two-finger scrolling as well. + - 110_remove_bound_auto_adjust.patch: Don't auto-adjust to bounds of + the hardware scroll area. + + -- Robert Hooker (Sarvatt) Sun, 28 Jun 2009 18:13:52 -0400 + +xserver-xorg-input-synaptics (1.1.2-1) unstable; urgency=low + + [ Mattia Dongili ] + * New upstream release. + * Replace 02-mention-tapping-in-manpage-notes.patch with the patch accepted + upstream (1f499d). + * Refresh patch 01-synaptics-dont-grab-if-not-on-current-VT.patch. + * Update README.Debian's date signature with the last modification time + (closes: #531999). + + -- Mattia Dongili Sat, 06 Jun 2009 13:32:59 +0900 + +xserver-xorg-input-synaptics (1.1.1~git20090510-1) unstable; urgency=low + + [ David Nusinow ] + * Add NEWS.Debian entry about enabling tapping again (closes: #497523) + + [ Mattia Dongili ] + * Link to xserver-xorg reportbug script + * Merge current upstream fixes: + - Edge calculation fixes bring back vertical scrolling (closes: #523946) + - Fix float properties handling on 64bit arches (closes: #525473) + * Remove Suggests for [kq]synaptics which are not in the repository anymore + (closes: #498299) and suggest gpointing-device-settings (replacement of + gsynaptics) and touchfreeze instead + * Remove the upstream NEWS file which doesn't exist anymore + * Updates to the README.Debian to make sure we mention how to customize the + fdi configuration + + -- Mattia Dongili Mon, 11 May 2009 23:08:15 +0900 + +xserver-xorg-input-synaptics (1.1.0-1) unstable; urgency=low + + * New upstream release. + * Upload to unstable. + + -- Julien Cristau Thu, 09 Apr 2009 01:34:19 +0100 + +xserver-xorg-input-synaptics (0.99.3-3) experimental; urgency=low + + [ Julien Cristau ] + * Get rid of the xfree86-driver-synaptics transitional package. It was + already a transitional package in etch. + + [ Timo Aaltonen ] + * Rename the source package to xserver-xorg-input-synaptics, since + it's hosted on freedesktop now and to be consistent with the rest + of the input drivers. + + -- Julien Cristau Mon, 26 Jan 2009 09:08:10 +0100 + +xfree86-driver-synaptics (0.99.3-2ubuntu4) jaunty; urgency=low + + * debian/patches/110_remove_bound_auto_adjust.patch: + - Small change to make sure that the driver does not + auto-adjust to the bounds of the hardware scroll area + as this causes problem to the touchpads of Acer Aspire + One units (LP: #320632). + + -- Alberto Milone Thu, 26 Mar 2009 17:00:52 +0100 + +xfree86-driver-synaptics (0.99.3-2ubuntu3) jaunty; urgency=low + + * debian/patches/109_override_alps_settings.patch: + - Add customised settings for ALPS touchpad (LP: #320632): + o Enable vertTwoFingerScroll by default. + o Set RightEdge to 900. + o Set ClickTime to 0. + o Set SingleTapTimeout to 0. + o Set MinSpeed to 0.45. + o Set MaxSpeed to 0.75. + * debian/patches/107_reduce_cursor_speed.patch: + - drop and merge with 109_override_alps_settings.patch. + + -- Alberto Milone (tseliot) Sat, 28 Feb 2009 10:20:08 +0100 + +xfree86-driver-synaptics (0.99.3-2ubuntu2) jaunty; urgency=low + + [Alberto Milone] + * debian/patches/105_always_enable_multifinger_click.patch: + - Drop patch + * debian/patches/105_correct_multifinger_click.patch: + - Fix inverted buttons + - Restore ability to drag and drop with physical buttons + (LP: #320632) + + -- Alberto Milone (tseliot) Sat, 31 Jan 2009 18:48:37 +0100 + +xfree86-driver-synaptics (0.99.3-2ubuntu1) jaunty; urgency=low + + * Merge from Debian experimental. + * Revive syndaemon_xinput_props.patch, now refreshed as 108. + Thanks to John S. Gruber for noticing it was dropped in haste. + (LP: #321355) + + -- Timo Aaltonen Mon, 26 Jan 2009 09:57:07 +0200 + +xfree86-driver-synaptics (0.99.3-2) experimental; urgency=low + + * Update our copy of xsfbs to get a fixed serverabi rule and generate + Provides/Depends correctly. + * Refresh patch 01-synaptics-dont-grab-if-not-on-current-VT.patch. + + -- Julien Cristau Mon, 26 Jan 2009 04:43:08 +0100 + +xfree86-driver-synaptics (0.99.3-1ubuntu2) jaunty; urgency=low + + [ Alberto Milone (tseliot) ] + * 103_enable_cornertapping.patch: + - Update patch for the new upstream release. (LP: #320632) + * 104_always_enable_tapping.patch: + - Enable tapping even when a physical left button is available. (LP: #320585) + * 105_always_enable_multifinger_click.patch: + - Enable multifinger click (where available) even when physical right/middle + buttons are available. (LP: #320585) + * 106_always_enable_vert_edge_scroll.patch: + - Enable scrolling even when doubletap is available. (LP: #320632) + * 107_reduce_cursor_speed.patch: + - Reduce the cursor speed. (LP: #320639) + + -- Timo Aaltonen Sat, 24 Jan 2009 20:29:04 +0200 + +xfree86-driver-synaptics (0.99.3-1ubuntu1) jaunty; urgency=low + + * Merge from Debian experimental. + * Drop obsolete patches: + -101_no_horizscroll.patch + -102_dont_check_abi.diff + -104_syndaemon_xinput_props.patch + -105_no_bcm5974_shmconfig.patch + * Update 103_enable_cornertapping.patch to apply. + + -- Timo Aaltonen Fri, 23 Jan 2009 14:30:34 +0200 + +xfree86-driver-synaptics (0.99.3-1) experimental; urgency=low + + [ Timo Aaltonen ] + * Run autoreconf at build time; build-depend on automake, libtool and + xutils-dev. + + [ Julien Cristau ] + * Add watch file. + * New upstream release. + * Build against xserver 1.6 rc1. + * Handle parallel builds. + + -- Julien Cristau Wed, 21 Jan 2009 22:27:10 +0100 + +xfree86-driver-synaptics (0.15.2-0ubuntu5) intrepid; urgency=low + + * Cherry-picked commit db6e63, "Return correctly on successful property + setting" + * debian/patches/104_syndaemon_xinput_props.patch: Add support for XInput + device properties to syndaemon. + * debian/patches/105_no_bcm5974_shmconfig.patch: Remove the SHMConfig + enabling line from the bcm5974 section of the fdi file. (LP: #282004) + + -- William Grant Mon, 13 Oct 2008 21:48:05 +1100 + +xfree86-driver-synaptics (0.15.2-0ubuntu4) intrepid; urgency=low + + * Cherry-picked commit 355e845, "Adjust to new property API". + (LP: #274728) + * Refresh patches 101 & 102. + * Bump the build-dep on libxi-dev and xserver-xorg-dev. + + -- Timo Aaltonen Mon, 29 Sep 2008 10:23:16 +0300 + +xfree86-driver-synaptics (0.15.2-0ubuntu3) intrepid; urgency=low + + * Also build for lpia; LP: #275158. + + -- Loic Minier Sat, 27 Sep 2008 16:11:42 +0200 + +xfree86-driver-synaptics (0.15.2-0ubuntu2) intrepid; urgency=low + + [ Alberto Milone ] + * 103_enable_cornertapping.patch: + - Revert some defaults back to previous values, to fix corner tapping + and MaxTapMove. (LP: #271823) + + -- Timo Aaltonen Tue, 23 Sep 2008 10:46:44 +0300 + +xfree86-driver-synaptics (0.15.2-0ubuntu1) intrepid; urgency=low + + * New upstream release. (LP: #262276, #268071, #247433, #262305) + * Drop 101_ubuntu.diff, superseded by input properties. + * Drop 103_fix_off_by_one.diff, applied upstream. + * 101_no_horizscroll.patch: + - Disable horizontal scrolling by defaulting to FALSE instead of changing + the fdi file. + * 102_dont_check_abi.diff: + - Remove one more check from src/synaptics.c, which was added recently. + + -- Timo Aaltonen Fri, 12 Sep 2008 01:32:57 +0300 + +xfree86-driver-synaptics (0.15.0+git20080820-1ubuntu5) intrepid; urgency=low + + * Rebuild to fix dependency against xserver-xorg-core. + + -- Timo Aaltonen Wed, 03 Sep 2008 17:45:20 +0300 + +xfree86-driver-synaptics (0.15.0+git20080820-1ubuntu4) intrepid; urgency=low + + * Run autoreconf at build time; build-depend on automake, libtool and + xutils-dev. + * Enable 102 again, since the problem with it was that Makefile.in was + not regenerated. + * Add 103_fix_off_by_one.diff to fix the number of arguments for + properties. Thanks William Grant! + * Pull 3d39926875446e from upstream/master: + - Re-enable TapButtons and CornerButtons to work by default. + (LP: #262292) + + -- Timo Aaltonen Sat, 30 Aug 2008 18:20:14 +0300 + +xfree86-driver-synaptics (0.15.0+git20080820-1ubuntu3) intrepid; urgency=low + + * Disable 102 for now, since the property stuff doesn't seem to be + working right. (LP: #262986) + + -- Timo Aaltonen Sat, 30 Aug 2008 16:52:51 +0300 + +xfree86-driver-synaptics (0.15.0+git20080820-1ubuntu2) intrepid; urgency=low + + * 102_dont_check_abi.diff: + - Don't check ABI_MAJOR, since we have all that's needed for + properties. + + -- Timo Aaltonen Sat, 30 Aug 2008 13:27:54 +0300 + +xfree86-driver-synaptics (0.15.0+git20080820-1ubuntu1) intrepid; urgency=low + + * Merge from Debian experimental, remaining changes: + - debian/control: + + Drop the dummy package + + Change the maintainer address + - debian/patches: + 101_ubuntu.diff + + Various fixes, split this. + - fdi/11-x11-synaptics.fdi + + Modify to disable horizontal scrolling like our dexconf used to do. + * Pull in support for input properties. + * Drop 102_polling.diff, since it's upstream. + + -- Timo Aaltonen Thu, 28 Aug 2008 02:09:47 +0300 + +xfree86-driver-synaptics (0.15.0+git20080820-1) experimental; urgency=low + + * Update to latest upstream git + * Remove patches merged upstream: + - 02-scandir-dev-input.patch + - 03-escape-dashes-in-manpages.patch + - 04-delibcwrap.patch + * Update debian/rules (taken from the evdev driver) for the autotoolized build + * Refresh 01-synaptics-dont-grab-if-not-on-current-VT.patch + * Cherry pick appletouch support from upstream + + -- Mattia Dongili Sun, 24 Aug 2008 17:44:12 +0900 + +xfree86-driver-synaptics (0.14.7~git20070706-2.2) experimental; urgency=low + + * Build against xserver 1.5 rc5. + + -- Julien Cristau Mon, 14 Jul 2008 16:14:31 +0200 + +xfree86-driver-synaptics (0.14.7~git20070706-3) unstable; urgency=low + + * Add appletouch support in the fdi file (Closes: #495799). + * Install the fdi file with 0644 permissions. + * Updated xserver-xorg-input-synaptics.README.Debian to mention automatic + configuration and show a clearer example for the Server (manual) + configuration (Closes: #443995 and also Closes: #492120). + + -- Mattia Dongili Wed, 27 Aug 2008 23:05:42 +0900 + +xfree86-driver-synaptics (0.14.7~git20070706-2.1.lenny1) unstable; urgency=low + + * Add 10-synaptics.fdi, installed in /usr/share/hal/fdi/policy/20thirdparty, + to get the driver loaded automatically if a touchpad is detected + (closes: #464662). + * Add patch from xorg git to fix usage of the EVIOCGBIT ioctl() + (closes: #493101). + + -- Julien Cristau Mon, 18 Aug 2008 01:41:39 +0200 + +xfree86-driver-synaptics (0.14.7~git20070706-2.1ubuntu4) intrepid; urgency=low + + * Fix the fdi file to disable horizontal scrolling like dexconf used + to do. + + -- Timo Aaltonen Mon, 18 Aug 2008 16:27:30 +0300 + +xfree86-driver-synaptics (0.14.7~git20070706-2.1ubuntu3) intrepid; urgency=low + + * Enable input-hotplug: install 10-synaptics.fdi in + /usr/share/hal/fdi/policy/20thirdparty. + + -- Timo Aaltonen Fri, 01 Aug 2008 09:58:32 +0300 + +xfree86-driver-synaptics (0.14.7~git20070706-2.1ubuntu2) intrepid; urgency=low + + * Rebuild against the new xserver-xorg-dev. + + -- Timo Aaltonen Mon, 07 Jul 2008 17:45:08 +0300 + +xfree86-driver-synaptics (0.14.7~git20070706-2.1ubuntu1) intrepid; urgency=low + + * Merge from debian unstable, remaining changes: + - Rename the source + - debian/control: + + Drop the dummy package + + Change the maintainer address. + + Add quilt to build-deps. + - Makefile: Add -fno-stack-protector. + - debian/patches: + 100_fix_vt_handling.diff + + Something is opening the device even after we've switched away + from the VT. The easiest way to handle this is to refuse to open + unless we're on the current VT. + 101_ubuntu.diff + + Various fixes, split this. + 102_polling.diff + + Added a patch which increases the polling timeout to save some + battery life + + -- Bryce Harrington Mon, 09 Jun 2008 22:27:20 -0700 + +xfree86-driver-synaptics (0.14.7~git20070706-2.1) unstable; urgency=low + + * Non-maintainer upload, with Mattia's agreement. + * Add patch to fix the build with xserver 1.5, which removed the libc + wrapper (closes: #471494). + * Add armel and armeb to the Architecture field (closes: #461551). + + -- Julien Cristau Mon, 02 Jun 2008 12:21:39 +0200 + +xfree86-driver-synaptics (0.14.7~git20070706-2) unstable; urgency=low + + * 01-synaptics-dont-grab-if-not-on-current-VT.patch from Matthew Garrett in + Ubuntu's 0.14.6-0ubuntu10 (Closes: #437273) + * 02-scandir-dev-input.patch to scan all the event devices in /dev/input + (Closes: #455994) + * update xsfbs + + -- Mattia Dongili Tue, 01 Jan 2008 12:38:13 +0900 + +xfree86-driver-synaptics (0.14.7~git20070706-1ubuntu4) hardy; urgency=low + + * 102_polling.diff: + - Added a patch which increases the polling timeout to save some + battery life (LP: #184398). + + -- Timo Aaltonen Wed, 27 Feb 2008 11:58:01 +0200 + +xfree86-driver-synaptics (0.14.7~git20070706-1ubuntu3) hardy; urgency=low + + * debian/patches/101_ubuntu.diff: + - extend to support disabling the touchpad + - remove unused bits of the patch + + -- Scott James Remnant Tue, 22 Jan 2008 13:40:07 +0000 + +xfree86-driver-synaptics (0.14.7~git20070706-1ubuntu2) hardy; urgency=low + + * Change the source name to match Debian. + + -- Timo Aaltonen Fri, 11 Jan 2008 11:59:09 +0200 + +xserver-xorg-input-synaptics (0.14.7~git20070706-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + - Rename the source + - debian/control: + + Drop the dummy package + + Change the maintainer address. + + Add quilt to build-deps. + - Makefile: Add -fno-stack-protector. + - debian/patches: + 100_fix_vt_handling.diff + + Something is opening the device even after we've switched away + from the VT. The easiest way to handle this is to refuse to open + unless we're on the current VT. + 101_ubuntu.diff + + Various fixes, split this. + + -- Timo Aaltonen Fri, 09 Nov 2007 02:23:16 +0200 + +xfree86-driver-synaptics (0.14.7~git20070706-1) unstable; urgency=low + + * build with xserver-xorg-core 1.4 (Closes: #442314) + * update to current git + * update xsfbs + + -- Mattia Dongili Mon, 17 Sep 2007 15:25:56 +0900 + +xfree86-driver-synaptics (0.14.7~git20070517-2) unstable; urgency=low + + * use xsfbs to build the driver and automagically get xserver-xorg deps + (Closes: #425818) + + -- Mattia Dongili Thu, 31 May 2007 14:17:31 +0900 + +xfree86-driver-synaptics (0.14.7~git20070517-1) unstable; urgency=low + + * git snapshot of the driver: + - from commit e6595886d7ae3a1730cd0d9f86fd0f305c0743c2 + "[...] synaptics, alps and appletouch pads all work approximately + identically without requiring model-specific configuration" + (Closes: #351621) (Closes: #406499) + - from commit 88211ca60be7cc74015ad4158722e5950884bd78 + "Don't match wacom tablets in the event device probing." + (Closes: #383711) + - from commit 473912f50ffd2b26bd2f638f9d87f86cf60e2dd6 + "Add a config option to prevent the driver from grabbing the event + device for exclusive use" (Closes: #380705) + - from commit 2d06ab1d2b3170b6fa44b945376b2ad4cd682af9 + "Allow to easily switch between move and scroll" + (Closes: #411266) + * set Maintaner to the XSF and me as Uploader + + -- Mattia Dongili Thu, 17 May 2007 19:34:22 +0900 + +xfree86-driver-synaptics (0.14.6-2) unstable; urgency=low + + * Build using Debian's xserver-xorg-dev instead of the package's + provided subtree (which is taken from XFree86-4.3.0). + + -- Mattia Dongili Wed, 03 Jan 2007 18:38:40 +0100 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu10) gutsy; urgency=low + + * Bodge around LP: #68370. Something is opening the device even after + we've switched away from the VT. The easiest way to handle this is + to refuse to open unless we're on the current VT. + + -- Matthew Garrett Tue, 09 Oct 2007 21:08:23 +0100 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu9) gutsy; urgency=low + + * Actually include the parameter setting code + + -- Matthew Garrett Mon, 17 Sep 2007 17:56:53 +0100 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu8) gutsy; urgency=low + + * Fix the build system so it works properly on 64-bit platforms + * Add initial support for setting some paramaters via X + + -- Matthew Garrett Sun, 16 Sep 2007 18:18:17 +0100 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu7) feisty; urgency=low + + * X and Y size calculations were inverted for edge scrolling + * Additionally, the values were scaled incorrectly (LP: #95858) + + -- Matthew Garrett Sun, 25 Mar 2007 16:13:42 +0100 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu6) feisty; urgency=low + + * Set defaults based on values the kernel gives us, rather than making stuff + up in an utterly miserable manner. This upload brought to you by Milton + Nero, a deeply flavoured oat stout. + + -- Matthew Garrett Sat, 24 Mar 2007 15:08:26 +0000 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu5) feisty; urgency=low + + * Attempt to set more reasonable defaults for appletouch devices. Better + now, but still not perfect. + + -- Matthew Garrett Sat, 24 Mar 2007 02:44:11 +0000 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu4) feisty; urgency=low + + * debian/control: Update maintainer fields according to debian- + maintainer-field spec. + + -- Martin Pitt Mon, 12 Mar 2007 14:58:39 +0000 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu3) edgy; urgency=low + + * Add the ugly ALPS hack back + + -- Matthew Garrett Mon, 7 Aug 2006 22:55:42 +0100 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu2) edgy; urgency=low + + * Disable Stack Protection for this package for now (module loading fails + due to missing symbols) + + -- Rodrigo Parra Novo Mon, 31 Jul 2006 09:39:16 -0300 + +xserver-xorg-input-synaptics (0.14.6-0ubuntu1) edgy; urgency=low + + * New Upstream release + * New versioned Build-Depends on xserver-xorg-dev (>= 1.1.1) + * New versioned Build-Depends on xserver-xorg-core (>= 1.1.1) + * Fixed debian/rules to match current Makefile rules (based on Debian + xfree86-driver-synaptics package) + * Fixed Makefile and manual page, also based on Debian xfree86-driver-synaptics + * Dropped Alps patches - unfortunately they don't apply anymore + + -- Rodrigo Parra Novo Thu, 27 Jul 2006 12:18:18 -0300 + +xfree86-driver-synaptics (0.14.5-1) unstable; urgency=low + + * New upstream release. + * Motion with pressure sensitivity merged upstream. (Closes: #337350) + + -- Mattia Dongili Sun, 04 Jun 2006 19:45:35 +0200 + +xfree86-driver-synaptics (0.14.4-5) unstable; urgency=low + + * Added m68k to the Achitecture: field. + + -- Mattia Dongili Sun, 30 Apr 2006 20:17:23 +0200 + +xfree86-driver-synaptics (0.14.4-4) unstable; urgency=low + + * Upload to unstable (Closes: #362108) + * Added xorg-driver-synaptics to the Provides, Conflicts, + Replaces list to ease Ubuntu mixed migrations (et al.) + + -- Mattia Dongili Mon, 27 Mar 2006 18:16:48 +0200 + +xfree86-driver-synaptics (0.14.4-3) experimental; urgency=low + + * building the driver as a shared object, this fixes a lintian warning + and better fits in the modular xorg structure. + + -- Mattia Dongili Wed, 22 Mar 2006 22:33:39 +0100 + +xfree86-driver-synaptics (0.14.4-2) experimental; urgency=low + + * New binary package name to follow modular xorg naming. + * Now suggesting the driver's graphical configuration tools. + * README.Debian: removed note about the 2.6.8 patch I removed recently. + + -- Mattia Dongili Sun, 19 Mar 2006 17:01:09 +0100 + +xfree86-driver-synaptics (0.14.4-1) unstable; urgency=low + + * New upstream version. + * Upstream added an -K command line option to syndaemon to ignore + Modifier+AnyKey combos (closes: #335888). + * Removed the rediffed patch against Debian's 2.6.8 kernel. + + -- Mattia Dongili Mon, 07 Nov 2005 22:54:40 +0100 + +xserver-xorg-input-synaptics (0.14.3+seriouslythistime-0ubuntu4) dapper; urgency=low + + * New versioned Build-Depends on xserver-xorg-dev (>= 1.1.1) + * New versioned Build-Depends on xserver-xorg-core (>= 1.1.1) + + -- Rodrigo Parra Novo Thu, 27 Jul 2006 11:59:57 -0300 + +xserver-xorg-input-synaptics (0.14.3+seriouslythistime-0ubuntu3) dapper; urgency=low + + * Horrible workaround to avoid massive ALPS-related suckage + + -- Matthew Garrett Wed, 22 Mar 2006 21:02:26 +0000 + +xserver-xorg-input-synaptics (0.14.3+seriouslythistime-0ubuntu2) dapper; urgency=low + + * Build with -fPIC to fix FTBFS + + -- Tollef Fog Heen Wed, 11 Jan 2006 16:20:57 +0100 + +xserver-xorg-input-synaptics (0.14.3+seriouslythistime-0ubuntu1) dapper; urgency=low + + * Bounce straight back to 0.14.3. + + -- Daniel Stone Tue, 25 Oct 2005 19:12:28 +1000 + +xorg-driver-synaptics (0.14.3+revertedto+0.13.6-0ubuntu3) breezy; urgency=low + + * Change dependency on xserver-xorg to -core (closes: Ubuntu#15902). + + -- Daniel Stone Fri, 16 Sep 2005 17:42:34 +1000 + +xorg-driver-synaptics (0.14.3+revertedto+0.13.6-0ubuntu2) breezy; urgency=low + + * Build client utilities without includes from Xincludes. + + -- Daniel Stone Wed, 7 Sep 2005 16:31:51 +1000 + +xorg-driver-synaptics (0.14.3+revertedto+0.13.6-0ubuntu1) breezy; urgency=low + + * Revert to old upstream version for preview at least, as the new was quite + catastrophically broken with ALPS. Fixed some, broke a lot (closes: + Ubuntu#14480). + * Backport the confused-finger-count patch. + * Hillariously, dpkg-source ignores deleted files, which means that + Xincludes stuff keeps getting resurrected. Change $(X_INCLUDES_ROOT) to + /usr in include paths (except for the server DDK) to ensure that we get + the installed headers, not the braindead included ones. + + -- Daniel Stone Wed, 7 Sep 2005 11:07:06 +1000 + +xorg-driver-synaptics (0.14.3-1ubuntu2) breezy; urgency=low + + * Move to /usr/lib/xorg for the modular server, and build-depend on + xserver-xorg-dev. + * Switch dependency to xserver-xorg-core, version it. + * Start building synaptics_drv.so instead of .o. + + -- Daniel Stone Fri, 2 Sep 2005 12:08:27 +1000 + +xorg-driver-synaptics (0.14.3-1ubuntu1) breezy; urgency=low + + * Merge with Debian. + * New upstream release: + + Fixes confused finger count with low pressure on some HPs (closes: + Ubuntu#14155). + * Remove unnecessary files in Xincludes from x11proto-core-dev and + x11proto-input-dev. + + -- Daniel Stone Thu, 1 Sep 2005 16:24:27 +1000 + +xfree86-driver-synaptics (0.14.3-1) unstable; urgency=low + + * New upstream version. + * Updated README.Debian to reflect newer X.Org dependencies. + + -- Mattia Dongili Fri, 22 Jul 2005 21:17:37 +0200 + +xfree86-driver-synaptics (0.14.2-2) unstable; urgency=low + + * Can now install together with xorg (closes: #318118). + + -- Mattia Dongili Wed, 29 Jun 2005 12:00:00 +0200 + +xfree86-driver-synaptics (0.14.2-1) unstable; urgency=low + + * New upstream release. + * Added notes to README.Debian to run syndaemon from .xinitrc + (closes: #296485) + + -- Mattia Dongili Wed, 18 May 2005 00:24:14 +0200 + +xfree86-driver-synaptics (0.14.1-1) unstable; urgency=low + + * New upstream release. + + -- Mattia Dongili Tue, 15 Mar 2005 22:33:25 +0100 + +xfree86-driver-synaptics (0.14.0-1) unstable; urgency=low + + * New upstream release: + - now correcly removes the shared memory segment when exiting X + (closes: #263382). + + -- Mattia Dongili (ma.d.) Mon, 10 Jan 2005 21:14:44 +0100 + +xfree86-driver-synaptics (0.13.6-2) unstable; urgency=low + + * Install in /usr/X11R6/lib as all the xfree drivers on 64 bit archs. (closes: #280658) + * Provided an alternative patch for debian-kernel users. (closes: #282359) + + -- Mattia Dongili (ma.d.) Sat, 18 Dec 2004 20:07:15 +0100 + +xfree86-driver-synaptics (0.13.6-1) unstable; urgency=low + + * New upstream. + + -- Mattia Dongili (ma.d.) Sun, 24 Oct 2004 22:14:32 +0200 + +xfree86-driver-synaptics (0.13.5-2) unstable; urgency=low + + * Re-fixed synaptics_drv.o mode to 0644 (why did it reappear?). + + -- Mattia Dongili (ma.d.) Thu, 19 Aug 2004 16:09:56 +0200 + +xfree86-driver-synaptics (0.13.5-1) unstable; urgency=low + + * New upstream. + + -- Mattia Dongili (ma.d.) Sun, 08 Aug 2004 12:41:38 +0200 + +xfree86-driver-synaptics (0.13.4-1) unstable; urgency=low + + * New upstream. + + -- Mattia Dongili (ma.d.) Tue, 27 Jul 2004 22:44:16 +0200 + +xfree86-driver-synaptics (0.13.3-1) unstable; urgency=low + + * New upstream. + * Fixed synaptics_drv.o mode to 0644. + + -- Mattia Dongili (ma.d.) Thu, 20 Jun 2004 15:59:25 +0200 + +xfree86-driver-synaptics (0.13.2-1) unstable; urgency=low + + * New upstream. + * Fixed middle mouse button emulation. (closes: #247219) + * Fixed detection of ALPS touchpads when using a 2.6 linux kernel. (closes: #245682) + * Made double clicks faster. (closes: #248826) + * Uploaded with the correct upstream changelog. (closes: #248811) + + -- Mattia Dongili (ma.d.) Tue, 11 May 2004 09:59:15 +0200 + +xfree86-driver-synaptics (0.13.0-1) unstable; urgency=low + + * New upstream. + + -- Mattia Dongili (ma.d.) Tue, 27 Apr 2004 17:07:26 +0200 + +xfree86-driver-synaptics (0.12.5-1) unstable; urgency=low + + * New upstream. (closes: #239329) + + -- Mattia Dongili (ma.d.) Sat, 20 Mar 2004 12:58:37 +0100 + +xfree86-driver-synaptics (0.12.4-1) unstable; urgency=low + + * Initial Release. (closes: #219163, #231763) + + -- Mattia Dongili (ma.d.) Tue, 2 Mar 2004 11:42:05 +0100 + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/gbp.conf +++ xserver-xorg-input-synaptics-1.6.2/debian/gbp.conf @@ -0,0 +1,3 @@ +[DEFAULT] +debian-branch=ubuntu + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/120_active_touches_num_fingers.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/120_active_touches_num_fingers.patch @@ -0,0 +1,65 @@ +From 3a87e4530d065a114024a602fa76a4b94d905801 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Tue, 29 Mar 2011 10:28:52 -0400 +Subject: [PATCH 2/3] Use the number of active touches instead of BTN_*TAP + +The kernel doesn't know about inactive areas of the touchpad, so it +doesn't filter out inactive touches when counting the number of fingers +for events like BTN_DOUBLETAP. + +When touch data is provided, use the current active touch count instead. + +Signed-off-by: Chase Douglas +--- + src/eventcomm.c | 8 +++++++- + src/eventcomm.h | 1 + + 2 files changed, 8 insertions(+), 1 deletions(-) + +Index: xserver-xorg-input-synaptics/src/eventcomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.c 2011-07-05 11:55:08.771347676 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.c 2011-07-05 11:55:10.801347676 +0300 +@@ -468,6 +468,7 @@ + XI_TouchEnd, 0, ecpriv->touch_mask); + ecpriv->mt_slot_map[ecpriv->cur_slot] = -1; + ecpriv->close_slot = FALSE; ++ ecpriv->active_touches--; + } + else + { +@@ -479,9 +480,12 @@ + int y = valuator_mask_get(ecpriv->touch_mask, y_axis); + + if (is_inside_active_area(priv, x, y)) ++ { + xf86PostTouchEvent(pInfo->dev, + ecpriv->mt_slot_map[ecpriv->cur_slot], + XI_TouchBegin, 0, ecpriv->touch_mask); ++ ecpriv->active_touches++; ++ } + else + ecpriv->mt_slot_map[ecpriv->cur_slot] = -1; + } +@@ -540,7 +544,9 @@ + case EV_SYN: + switch (ev->code) { + case SYN_REPORT: +- if (comm->oneFinger) ++ if (priv->has_touch) ++ hw->numFingers = ecpriv->active_touches; ++ else if (comm->oneFinger) + hw->numFingers = 1; + else if (comm->twoFingers) + hw->numFingers = 2; +Index: xserver-xorg-input-synaptics/src/eventcomm.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.h 2011-07-05 11:55:02.771347676 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.h 2011-07-05 11:55:10.801347676 +0300 +@@ -58,6 +58,7 @@ + int num_touches; + struct mtdev *mtdev; + struct grail *grail; ++ int active_touches; + } EventcommPrivate; + + extern Bool EventProcessEvent(InputInfoPtr pInfo, struct CommData *comm, --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/116_xi2_1.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/116_xi2_1.patch @@ -0,0 +1,574 @@ +Index: xserver-xorg-input-synaptics/configure.ac +=================================================================== +--- xserver-xorg-input-synaptics.orig/configure.ac 2011-07-05 11:54:32.981347672 +0300 ++++ xserver-xorg-input-synaptics/configure.ac 2011-07-05 11:54:55.781347674 +0300 +@@ -101,6 +101,9 @@ + AC_MSG_RESULT([eventcomm]) + BUILD_EVENTCOMM="yes" + AC_DEFINE(BUILD_EVENTCOMM, 1, [Optional backend eventcomm enabled]) ++ ++ # Obtain compiler/linker options for mtdev ++ PKG_CHECK_MODULES(MTDEV, mtdev) + ;; + *freebsd* | *openbsd* | *netbsd* | *dragonfly*) + AC_MSG_RESULT([psmcomm]) +Index: xserver-xorg-input-synaptics/src/Makefile.am +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/Makefile.am 2011-07-05 11:54:33.041347672 +0300 ++++ xserver-xorg-input-synaptics/src/Makefile.am 2011-07-05 11:54:55.781347674 +0300 +@@ -40,6 +40,7 @@ + if BUILD_EVENTCOMM + @DRIVER_NAME@_drv_la_SOURCES += \ + eventcomm.c eventcomm.h ++@DRIVER_NAME@_drv_la_LIBADD = $(MTDEV_LIBS) + endif + + if BUILD_PSMCOMM +Index: xserver-xorg-input-synaptics/src/alpscomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/alpscomm.c 2011-07-05 11:54:33.001347672 +0300 ++++ xserver-xorg-input-synaptics/src/alpscomm.c 2011-07-05 11:54:55.781347674 +0300 +@@ -230,6 +230,9 @@ + struct SynapticsProtocolOperations alps_proto_operations = { + NULL, + NULL, ++ NULL, ++ NULL, ++ NULL, + ALPSQueryHardware, + ALPSReadHwState, + ALPSAutoDevProbe, +Index: xserver-xorg-input-synaptics/src/eventcomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.c 2011-07-05 11:54:33.051347672 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.c 2011-07-05 11:54:55.781347674 +0300 +@@ -41,6 +41,8 @@ + #include "synaptics.h" + #include "synapticsstr.h" + #include ++#include ++#include + + + #define SYSCALL(call) while (((call) == -1) && (errno == EINTR)) +@@ -55,16 +57,116 @@ + * Function Definitions + ****************************************************************************/ + +-static void +-EventDeviceOnHook(InputInfoPtr pInfo, SynapticsParameters *para) ++static int ++EventDevicePreInitHook(InputDriverPtr drv, InputInfoPtr pInfo, int flags) + { + SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; +- BOOL *need_grab; ++ EventcommPrivate *ecpriv; ++ struct input_absinfo abs; ++ int rc; + ++ priv->proto_data = calloc(1, sizeof(EventcommPrivate)); + if (!priv->proto_data) +- priv->proto_data = calloc(1, sizeof(BOOL)); ++ return !Success; ++ ++ ecpriv = priv->proto_data; ++ ecpriv->need_grab = TRUE; ++ ecpriv->num_touches = 10; ++ ecpriv->cur_slot = -1; ++ ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGABS(ABS_MT_SLOT), &abs)); ++ if (rc >= 0 && abs.maximum > 0) ++ ecpriv->num_touches = abs.maximum + 1; ++ else { ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGABS(ABS_MT_TRACKING_ID), &abs)); ++ if (rc >= 0 && abs.maximum > 0) ++ ecpriv->num_touches = abs.maximum + 1; ++ } ++ ++ return Success; ++} + +- need_grab = (BOOL*)priv->proto_data; ++static Bool ++EventDeviceInitHook(DeviceIntPtr dev) ++{ ++ InputInfoPtr pInfo = dev->public.devicePrivate; ++ SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ int i; ++ ++ if (!priv->has_touch) ++ return Success; ++ ++ ecpriv->mt_slot_map = malloc(ecpriv->num_touches * sizeof(int)); ++ if (!ecpriv->mt_slot_map) ++ goto err; ++ ++ for (i = 0; i < ecpriv->num_touches; i++) ++ ecpriv->mt_slot_map[i] = -1; ++ ++ ecpriv->touch_mask = valuator_mask_new(ecpriv->num_mt_axes); ++ ecpriv->cur_vals = valuator_mask_new(ecpriv->num_mt_axes); ++ if (!ecpriv->touch_mask || !ecpriv->cur_vals) ++ goto err; ++ ++ if (!InitTouchClassDeviceStruct(pInfo->dev, ecpriv->num_touches, ++ XIDependentTouch, ecpriv->num_mt_axes)) ++ goto err; ++ ++ for (i = ABS_MT_TOUCH_MAJOR; i <= ABS_MT_DISTANCE; i++) { ++ int axnum, resolution = 10000; ++ char *name; ++ Atom atom; ++ static char * const names[] = { ++ AXIS_LABEL_PROP_ABS_MT_TOUCH_MAJOR, ++ AXIS_LABEL_PROP_ABS_MT_TOUCH_MINOR, ++ AXIS_LABEL_PROP_ABS_MT_WIDTH_MAJOR, ++ AXIS_LABEL_PROP_ABS_MT_WIDTH_MINOR, ++ AXIS_LABEL_PROP_ABS_MT_ORIENTATION, ++ AXIS_LABEL_PROP_ABS_MT_POSITION_X, ++ AXIS_LABEL_PROP_ABS_MT_POSITION_Y, ++ AXIS_LABEL_PROP_ABS_MT_TOOL_TYPE, ++ AXIS_LABEL_PROP_ABS_MT_BLOB_ID, ++ AXIS_LABEL_PROP_ABS_MT_TRACKING_ID, ++ AXIS_LABEL_PROP_ABS_MT_PRESSURE, ++ }; ++ ++ if (!BitIsOn(ecpriv->absbits, i)) ++ continue; ++ ++ axnum = ecpriv->mt_axis_map[i - ABS_MT_TOUCH_MAJOR]; ++ name = names[i - ABS_MT_TOUCH_MAJOR]; ++ ++ if (ecpriv->absinfo[i].resolution) ++ resolution = ecpriv->absinfo[i].resolution * 1000; ++ ++ atom = MakeAtom(name, strlen(name), TRUE); ++ ++ xf86InitTouchValuatorAxisStruct(pInfo->dev, axnum, atom, ++ ecpriv->absinfo[i].minimum, ++ ecpriv->absinfo[i].maximum, ++ ecpriv->absinfo[i].resolution); ++ } ++ ++ return Success; ++ ++err: ++ free(ecpriv->mt_slot_map); ++ ecpriv->mt_slot_map = NULL; ++ free(ecpriv->cur_vals); ++ ecpriv->cur_vals = NULL; ++ free(ecpriv->touch_mask); ++ ecpriv->touch_mask = NULL; ++ return !Success; ++} ++ ++static void ++EventDeviceOnHook(InputInfoPtr pInfo, SynapticsParameters *para) ++{ ++ SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ struct input_absinfo abs; ++ int rc; + + if (para->grab_event_device) { + /* Try to grab the event device so that data don't leak to /dev/input/mice */ +@@ -76,7 +178,50 @@ + } + } + +- *need_grab = FALSE; ++ ecpriv->need_grab = FALSE; ++ ++ if (priv->has_touch) { ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGABS(ABS_MT_SLOT), &abs)); ++ if (rc >= 0) ++ ecpriv->cur_slot = abs.value; ++ } ++ ++ ecpriv->mtdev = malloc(sizeof(struct mtdev)); ++ if (!ecpriv->mtdev) ++ return; ++ ++ if (mtdev_open(ecpriv->mtdev, pInfo->fd)) { ++ free(ecpriv->mtdev); ++ ecpriv->mtdev = NULL; ++ return; ++ } ++} ++ ++static void ++EventDeviceOffHook(InputInfoPtr pInfo) ++{ ++ SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ ++ if (ecpriv->mtdev) { ++ mtdev_close(ecpriv->mtdev); ++ free(ecpriv->mtdev); ++ ecpriv->mtdev = NULL; ++ } ++} ++ ++static void ++EventDeviceCloseHook(DeviceIntPtr dev) ++{ ++ InputInfoPtr pInfo = dev->public.devicePrivate; ++ SynapticsPrivate *priv = (SynapticsPrivate *) pInfo->private; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ ++ free(ecpriv->mt_slot_map); ++ free(ecpriv->cur_vals); ++ free(ecpriv->touch_mask); ++ free(ecpriv); ++ priv->proto_data = NULL; + } + + static Bool +@@ -171,11 +316,14 @@ + event_query_axis_ranges(InputInfoPtr pInfo) + { + SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; + struct input_absinfo abs = {0}; +- unsigned long absbits[NBITS(ABS_MAX)] = {0}; + unsigned long keybits[NBITS(KEY_MAX)] = {0}; + char buf[256]; +- int rc; ++ int i, rc; ++ uint8_t prop; ++ ++ memset(ecpriv->absbits, 0, sizeof(ecpriv->absbits)); + + SYSCALL(rc = ioctl(pInfo->fd, EVIOCGABS(ABS_X), &abs)); + if (rc >= 0) +@@ -215,11 +363,12 @@ + + priv->has_pressure = FALSE; + priv->has_width = FALSE; +- SYSCALL(rc = ioctl(pInfo->fd, EVIOCGBIT(EV_ABS, sizeof(absbits)), absbits)); ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGBIT(EV_ABS, sizeof(ecpriv->absbits)), ++ ecpriv->absbits)); + if (rc >= 0) + { +- priv->has_pressure = (TEST_BIT(ABS_PRESSURE, absbits) != 0); +- priv->has_width = (TEST_BIT(ABS_TOOL_WIDTH, absbits) != 0); ++ priv->has_pressure = (TEST_BIT(ABS_PRESSURE, ecpriv->absbits) != 0); ++ priv->has_width = (TEST_BIT(ABS_TOOL_WIDTH, ecpriv->absbits) != 0); + } + else + xf86Msg(X_ERROR, "%s: failed to query ABS bits (%s)\n", pInfo->name, +@@ -278,15 +427,34 @@ + + xf86Msg(X_PROBED, "%s: buttons:%s\n", pInfo->name, buf); + } ++ ++ /* We don't support SemiMultitouch devices yet. */ ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGPROP(sizeof(prop)), &prop)); ++ if (rc >= 0 && (prop & INPUT_PROP_SEMI_MT)) ++ return; ++ ++ for (i = ABS_MT_TOUCH_MAJOR; i <= ABS_MT_PRESSURE; i++) { ++ if (!BitIsOn(ecpriv->absbits, i)) ++ continue; ++ ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGABS(i), &ecpriv->absinfo[i])); ++ if (rc < 0) { ++ ClearBit(ecpriv->absbits, i); ++ continue; ++ } ++ ++ ecpriv->mt_axis_map[i - ABS_MT_TOUCH_MAJOR] = ecpriv->num_mt_axes++; ++ priv->has_touch = TRUE; ++ } + } + + static Bool + EventQueryHardware(InputInfoPtr pInfo) + { + SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; +- BOOL *need_grab = (BOOL*)priv->proto_data; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; + +- if (!event_query_is_touchpad(pInfo->fd, (need_grab) ? *need_grab : TRUE)) ++ if (!event_query_is_touchpad(pInfo->fd, ecpriv->need_grab)) + return FALSE; + + xf86Msg(X_PROBED, "%s: touchpad found\n", pInfo->name); +@@ -294,13 +462,49 @@ + return TRUE; + } + ++static void ++ProcessTouch(InputInfoPtr pInfo, SynapticsPrivate *priv) ++{ ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ ++ if (!priv->has_touch || ecpriv->cur_slot < 0 || ++ ecpriv->mt_slot_map[ecpriv->cur_slot] == (uint32_t)-1) ++ return; ++ ++ if (ecpriv->close_slot) ++ { ++ xf86PostTouchEvent(pInfo->dev, ++ ecpriv->mt_slot_map[ecpriv->cur_slot], ++ XI_TouchEnd, 0, ecpriv->touch_mask); ++ ecpriv->mt_slot_map[ecpriv->cur_slot] = -1; ++ ecpriv->close_slot = FALSE; ++ } ++ else ++ { ++ uint16_t type = ecpriv->new_touch ? XI_TouchBegin : XI_TouchUpdate; ++ ++ xf86PostTouchEvent(pInfo->dev, ecpriv->mt_slot_map[ecpriv->cur_slot], ++ type, 0, ecpriv->touch_mask); ++ ecpriv->new_touch = FALSE; ++ } ++ ++ valuator_mask_zero(ecpriv->touch_mask); ++} ++ + static Bool + SynapticsReadEvent(InputInfoPtr pInfo, struct input_event *ev) + { ++ SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private); ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; + int rc = TRUE; + ssize_t len; + +- len = read(pInfo->fd, ev, sizeof(*ev)); ++ if (ecpriv->mtdev) ++ len = mtdev_get(ecpriv->mtdev, pInfo->fd, ev, 1) * ++ sizeof(struct input_event); ++ else ++ len = read(pInfo->fd, ev, sizeof(*ev)); ++ + if (len <= 0) + { + /* We use X_NONE here because it doesn't alloc */ +@@ -324,6 +528,7 @@ + struct SynapticsHwState *hw = &(comm->hwState); + SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; + SynapticsParameters *para = &priv->synpara; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; + + while (SynapticsReadEvent(pInfo, &ev)) { + switch (ev.type) { +@@ -339,6 +544,7 @@ + else + hw->numFingers = 0; + *hwRet = *hw; ++ ProcessTouch(pInfo, priv); + return TRUE; + } + break; +@@ -413,6 +619,55 @@ + case ABS_TOOL_WIDTH: + hw->fingerWidth = ev.value; + break; ++ case ABS_MT_SLOT: ++ if (priv->has_touch) ++ { ++ ProcessTouch(pInfo, priv); ++ ecpriv->cur_slot = ev.value; ++ } ++ break; ++ case ABS_MT_TRACKING_ID: ++ if (ecpriv->cur_slot < 0) ++ break; ++ if (ev.value >= 0) ++ { ++ if (ecpriv->mt_slot_map[ecpriv->cur_slot] != (uint32_t)-1) ++ { ++ xf86Msg(X_WARNING, "%s: Ignoring new tracking ID for " ++ "existing touch.\n", pInfo->dev->name); ++ } ++ else ++ { ++ ecpriv->mt_slot_map[ecpriv->cur_slot] = ++ ecpriv->next_touch_id++; ++ ecpriv->new_touch = TRUE; ++ valuator_mask_copy(ecpriv->touch_mask, ++ ecpriv->cur_vals); ++ } ++ } ++ else ++ ecpriv->close_slot = TRUE; ++ break; ++ case ABS_MT_TOUCH_MAJOR: ++ case ABS_MT_TOUCH_MINOR: ++ case ABS_MT_WIDTH_MAJOR: ++ case ABS_MT_WIDTH_MINOR: ++ case ABS_MT_ORIENTATION: ++ case ABS_MT_POSITION_X: ++ case ABS_MT_POSITION_Y: ++ case ABS_MT_TOOL_TYPE: ++ case ABS_MT_BLOB_ID: ++ case ABS_MT_PRESSURE: ++ if (ecpriv->cur_slot >= 0) ++ { ++ valuator_mask_set(ecpriv->touch_mask, ++ ecpriv->mt_axis_map[ev.code - ABS_MT_TOUCH_MAJOR], ++ ev.value); ++ valuator_mask_set(ecpriv->cur_vals, ++ ecpriv->mt_axis_map[ev.code - ABS_MT_TOUCH_MAJOR], ++ ev.value); ++ } ++ break; + } + break; + } +@@ -432,9 +687,9 @@ + EventReadDevDimensions(InputInfoPtr pInfo) + { + SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; +- BOOL *need_grab = (BOOL*)priv->proto_data; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; + +- if (event_query_is_touchpad(pInfo->fd, (need_grab) ? *need_grab : TRUE)) ++ if (event_query_is_touchpad(pInfo->fd, ecpriv->need_grab)) + event_query_axis_ranges(pInfo); + event_query_info(pInfo); + } +@@ -491,8 +746,11 @@ + } + + struct SynapticsProtocolOperations event_proto_operations = { ++ EventDevicePreInitHook, ++ EventDeviceInitHook, + EventDeviceOnHook, +- NULL, ++ EventDeviceOffHook, ++ EventDeviceCloseHook, + EventQueryHardware, + EventReadHwState, + EventAutoDevProbe, +Index: xserver-xorg-input-synaptics/src/eventcomm.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.h 2011-07-05 11:54:32.991347672 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.h 2011-07-05 11:54:55.781347674 +0300 +@@ -29,9 +29,31 @@ + + #include + #include ++#include ++#include ++#include + + /* for auto-dev: */ + #define DEV_INPUT_EVENT "/dev/input" + #define EVENT_DEV_NAME "event" + ++struct mtdev; ++ ++typedef struct { ++ BOOL need_grab; ++ unsigned long absbits[ABS_CNT]; ++ struct input_absinfo absinfo[ABS_CNT]; ++ int mt_axis_map[ABS_MT_DISTANCE - ABS_MT_TOUCH_MAJOR]; ++ int cur_slot; ++ uint32_t *mt_slot_map; ++ Bool close_slot; ++ uint32_t next_touch_id; ++ ValuatorMask *touch_mask; ++ ValuatorMask *cur_vals; ++ Bool new_touch; ++ int num_mt_axes; ++ int num_touches; ++ struct mtdev *mtdev; ++} EventcommPrivate; ++ + #endif /* _EVENTCOMM_H_ */ +Index: xserver-xorg-input-synaptics/src/ps2comm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/ps2comm.c 2011-07-05 11:54:33.011347672 +0300 ++++ xserver-xorg-input-synaptics/src/ps2comm.c 2011-07-05 11:54:55.781347674 +0300 +@@ -668,7 +668,10 @@ + + struct SynapticsProtocolOperations psaux_proto_operations = { + NULL, ++ NULL, ++ NULL, + PS2DeviceOffHook, ++ NULL, + PS2QueryHardware, + PS2ReadHwState, + PS2AutoDevProbe, +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2011-07-05 11:54:51.321347674 +0300 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2011-07-05 11:54:55.781347674 +0300 +@@ -735,6 +735,10 @@ + priv->synpara.hyst_x = -1; + priv->synpara.hyst_y = -1; + ++ if (priv->proto_ops->DevicePreInitHook) ++ if (priv->proto_ops->DevicePreInitHook(drv, pInfo, flags) != Success) ++ goto SetupProc_fail; ++ + /* read hardware dimensions */ + ReadDevDimensions(pInfo); + +@@ -911,6 +915,9 @@ + InputInfoPtr pInfo = dev->public.devicePrivate; + SynapticsPrivate *priv = (SynapticsPrivate *) pInfo->private; + ++ if (priv->proto_ops->DeviceCloseHook) ++ priv->proto_ops->DeviceCloseHook(dev); ++ + RetValue = DeviceOff(dev); + TimerFree(priv->timer); + priv->timer = NULL; +@@ -1089,6 +1096,9 @@ + InitDeviceProperties(pInfo); + XIRegisterPropertyHandler(pInfo->dev, SetProperty, NULL, NULL); + ++ if (priv->proto_ops->DeviceInitHook) ++ return priv->proto_ops->DeviceInitHook(dev); ++ + return Success; + } + +Index: xserver-xorg-input-synaptics/src/synapticsstr.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synapticsstr.h 2011-07-05 11:54:33.021347672 +0300 ++++ xserver-xorg-input-synaptics/src/synapticsstr.h 2011-07-05 11:54:55.781347674 +0300 +@@ -22,6 +22,8 @@ + #ifndef _SYNAPTICSSTR_H_ + #define _SYNAPTICSSTR_H_ + ++#include ++ + #include "synproto.h" + + #ifdef DBG +@@ -240,6 +242,7 @@ + Bool has_pressure; /* device reports pressure */ + Bool has_width; /* device reports finger width */ + Bool has_scrollbuttons; /* device has physical scrollbuttons */ ++ Bool has_touch; /* device has multitouch */ + + enum TouchpadModel model; /* The detected model */ + } SynapticsPrivate; +Index: xserver-xorg-input-synaptics/src/synproto.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synproto.h 2011-07-05 11:54:33.071347672 +0300 ++++ xserver-xorg-input-synaptics/src/synproto.h 2011-07-05 11:54:55.781347674 +0300 +@@ -83,8 +83,11 @@ + struct CommData; + + struct SynapticsProtocolOperations { ++ int (*DevicePreInitHook)(InputDriverPtr drv, InputInfoPtr pInfo, int flags); ++ Bool (*DeviceInitHook)(DeviceIntPtr dev); + void (*DeviceOnHook)(InputInfoPtr pInfo, struct _SynapticsParameters *para); + void (*DeviceOffHook)(InputInfoPtr pInfo); ++ void (*DeviceCloseHook)(DeviceIntPtr dev); + Bool (*QueryHardware)(InputInfoPtr pInfo); + Bool (*ReadHwState)(InputInfoPtr pInfo, + struct SynapticsProtocolOperations *proto_ops, +@@ -102,5 +105,4 @@ + #endif /* BUILD_PSMCOMM */ + extern struct SynapticsProtocolOperations alps_proto_operations; + +- + #endif /* _SYNPROTO_H_ */ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/104_always_enable_tapping.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/104_always_enable_tapping.patch @@ -0,0 +1,19 @@ +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2012-04-04 14:35:24.964138002 -0700 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2012-04-04 14:35:41.240138001 -0700 +@@ -656,10 +656,10 @@ static void set_default_parameters(Input + palmMinWidth = priv->minw + range * (10.0/16); + emulateTwoFingerMinW = priv->minw + range * (7.0/16); + +- /* Enable tap if we don't have a phys left button */ +- tapButton1 = priv->has_left ? 0 : 1; +- tapButton2 = priv->has_left ? 0 : 3; +- tapButton3 = priv->has_left ? 0 : 2; ++ /* Enable tap */ ++ tapButton1 = 1; ++ tapButton2 = 3; ++ tapButton3 = 2; + + /* Enable multifinger-click if only have one physical button, + otherwise clickFinger is always button 1. */ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/128_disable_three_click_action.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/128_disable_three_click_action.patch @@ -0,0 +1,13 @@ +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2012-02-13 20:30:53.165083092 -0800 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2012-02-13 20:32:17.402508282 -0800 +@@ -497,7 +497,7 @@ + otherwise clickFinger is always button 1. */ + clickFinger1 = 1; + clickFinger2 = (priv->has_right || priv->has_middle) ? 1 : 3; +- clickFinger3 = (priv->has_right || priv->has_middle) ? 1 : 2; ++ clickFinger3 = 0; /* Disabled by default so three-touch gestures work */ + + /* Enable vert edge scroll */ + vertEdgeScroll = TRUE; --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/103_enable_cornertapping.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/103_enable_cornertapping.patch @@ -0,0 +1,15 @@ +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2011-07-05 11:54:36.601347672 +0300 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2011-07-05 11:54:45.481347675 +0300 +@@ -560,8 +560,8 @@ + pars->touchpad_off = xf86SetIntOption(opts, "TouchpadOff", 0); + pars->locked_drags = xf86SetBoolOption(opts, "LockedDrags", FALSE); + pars->locked_drag_time = xf86SetIntOption(opts, "LockedDragTimeout", 5000); +- pars->tap_action[RT_TAP] = xf86SetIntOption(opts, "RTCornerButton", 0); +- pars->tap_action[RB_TAP] = xf86SetIntOption(opts, "RBCornerButton", 0); ++ pars->tap_action[RT_TAP] = xf86SetIntOption(opts, "RTCornerButton", 2); ++ pars->tap_action[RB_TAP] = xf86SetIntOption(opts, "RBCornerButton", 3); + pars->tap_action[LT_TAP] = xf86SetIntOption(opts, "LTCornerButton", 0); + pars->tap_action[LB_TAP] = xf86SetIntOption(opts, "LBCornerButton", 0); + pars->tap_action[F1_TAP] = xf86SetIntOption(opts, "TapButton1", tapButton1); --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/130_dont_enable_rightbutton_area.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/130_dont_enable_rightbutton_area.patch @@ -0,0 +1,43 @@ +From 797e51a27f48a93da9f3fb3355ca78c483029e63 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Fri, 23 Mar 2012 10:58:52 -0700 +Subject: [PATCH] Revert "conf: enable right-button click by default on + non-Apple clickpads" + +This is a behavior change that is inappropriate at this point in the +Precise release cycle + +This reverts commit b6779458bcdb049480310ba1acb3991ad061ffc7. +--- + conf/50-synaptics.conf | 18 ------------------ + 1 files changed, 0 insertions(+), 18 deletions(-) + +diff --git a/conf/50-synaptics.conf b/conf/50-synaptics.conf +index 822f7a4..5ec7e78 100644 +--- a/conf/50-synaptics.conf ++++ b/conf/50-synaptics.conf +@@ -24,21 +24,3 @@ Section "InputClass" + MatchDevicePath "/dev/input/mouse*" + Option "Ignore" "on" + EndSection +- +-# This option enables the bottom right corner to be a right button on +-# non-synaptics clickpads. +-# This option is only interpreted by clickpads. +-Section "InputClass" +- Identifier "Default clickpad buttons" +- MatchDriver "synaptics" +- Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" +-EndSection +- +-# This option disables software buttons on Apple touchpads. +-# This option is only interpreted by clickpads. +-Section "InputClass" +- Identifier "Disable clickpad buttons on Apple touchpads" +- MatchProduct "Apple|bcm5974" +- MatchDriver "synaptics" +- Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" +-EndSection +-- +1.7.9.1 + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/101_resolution_detect_option.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/101_resolution_detect_option.patch @@ -0,0 +1,126 @@ +--- a/include/synaptics-properties.h ++++ b/include/synaptics-properties.h +@@ -143,6 +143,9 @@ + #define SYNAPTICS_PROP_PRESSURE_MOTION_FACTOR "Synaptics Pressure Motion Factor" + + /* 8 bit (BOOL) */ ++#define SYNAPTICS_PROP_RESOLUTION_DETECT "Synaptics Resolution Detect" ++ ++/* 8 bit (BOOL) */ + #define SYNAPTICS_PROP_GRAB "Synaptics Grab Event Device" + + /* 8 bit (BOOL), 1 value, tap-and-drag */ +--- a/man/synaptics.man ++++ b/man/synaptics.man +@@ -461,6 +461,18 @@ + TapAndDragGesture option to false. Property: "Synaptics Gestures" + . + .TP ++.BI "Option \*ResolutionDetect\*q \*q" boolean \*q ++Allow or prevent the synaptics driver from reporting the size of the ++touchpad to the X server. The X server normally uses this information ++to scale movements so that touchpad movement corresponds visually to ++mouse cursor movements on the screen. However, in some rare cases where ++the touchpad height/width ratio is significantly different from the ++laptop, it can cause the mouse cursor to skip pixels in the X or Y axis. ++This option allows disabling this scaling behavior, which can provide ++smoother mouse movement in such cases. ++Property: "Synaptics Resolution Detect" ++. ++.TP + .BI "Option \*qVertResolution\*q \*q" integer \*q + Resolution of X coordinates in units/millimeter. The value is used + together with HorizResolution to compensate unequal vertical and +@@ -941,6 +953,10 @@ + FLOAT, 2 values, min, max. + + .TP 7 ++.BI "Synaptics Resolution Detect" ++8 bit (BOOL). ++ ++.TP 7 + .BI "Synaptics Grab Event Device" + 8 bit (BOOL). + +--- a/src/properties.c ++++ b/src/properties.c +@@ -87,6 +87,7 @@ + Atom prop_coastspeed = 0; + Atom prop_pressuremotion = 0; + Atom prop_pressuremotion_factor = 0; ++Atom prop_resolution_detect = 0; + Atom prop_grab = 0; + Atom prop_gestures = 0; + Atom prop_capabilities = 0; +@@ -343,6 +344,10 @@ + InitFloatAtom(pInfo->dev, SYNAPTICS_PROP_PRESSURE_MOTION_FACTOR, 2, + fvalues); + ++ prop_resolution_detect = ++ InitAtom(pInfo->dev, SYNAPTICS_PROP_RESOLUTION_DETECT, 8, 1, ++ ¶->resolution_detect); ++ + prop_grab = + InitAtom(pInfo->dev, SYNAPTICS_PROP_GRAB, 8, 1, + ¶->grab_event_device); +@@ -776,6 +781,12 @@ + para->press_motion_min_z = press[0]; + para->press_motion_max_z = press[1]; + } ++ else if (property == prop_resolution_detect) { ++ if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER) ++ return BadMatch; ++ ++ para->resolution_detect = *(BOOL*)prop->data; ++ } + else if (property == prop_grab) { + if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER) + return BadMatch; +--- a/src/synaptics.c ++++ b/src/synaptics.c +@@ -787,6 +787,7 @@ + xf86SetIntOption(opts, "PressureMotionMinZ", pressureMotionMinZ); + pars->press_motion_max_z = + xf86SetIntOption(opts, "PressureMotionMaxZ", pressureMotionMaxZ); ++ pars->resolution_detect = xf86SetBoolOption(opts, "ResolutionDetect", TRUE); + + pars->min_speed = xf86SetRealOption(opts, "MinSpeed", 0.4); + pars->max_speed = xf86SetRealOption(opts, "MaxSpeed", 0.7); +@@ -1399,7 +1400,7 @@ + } + + /* X valuator */ +- if (priv->minx < priv->maxx) { ++ if (priv->minx < priv->maxx && priv->synpara.resolution_detect) { + min = priv->minx; + max = priv->maxx; + } +@@ -1417,7 +1418,7 @@ + xf86InitValuatorDefaults(dev, 0); + + /* Y valuator */ +- if (priv->miny < priv->maxy) { ++ if (priv->miny < priv->maxy && priv->synpara.resolution_detect) { + min = priv->miny; + max = priv->maxy; + } +--- a/src/synapticsstr.h ++++ b/src/synapticsstr.h +@@ -174,6 +174,7 @@ + int press_motion_max_z; /* finger pressure at which maximum pressure motion factor is applied */ + double press_motion_min_factor; /* factor applied on speed when finger pressure is at minimum */ + double press_motion_max_factor; /* factor applied on speed when finger pressure is at minimum */ ++ Bool resolution_detect; /* report pad size to xserver? */ + Bool grab_event_device; /* grab event device for exclusive use? */ + Bool tap_and_drag_gesture; /* Switches the tap-and-drag gesture on/off */ + unsigned int resolution_horiz; /* horizontal resolution of touchpad in units/mm */ +--- a/tools/synclient.c ++++ b/tools/synclient.c +@@ -136,6 +136,7 @@ + {"PressureMotionMaxZ", PT_INT, 1, 255, SYNAPTICS_PROP_PRESSURE_MOTION, 32, 1}, + {"PressureMotionMinFactor", PT_DOUBLE, 0, 10.0,SYNAPTICS_PROP_PRESSURE_MOTION_FACTOR, 0 /*float*/, 0}, + {"PressureMotionMaxFactor", PT_DOUBLE, 0, 10.0,SYNAPTICS_PROP_PRESSURE_MOTION_FACTOR, 0 /*float*/, 1}, ++ {"ResolutionDetect", PT_BOOL, 0, 1, SYNAPTICS_PROP_RESOLUTION_DETECT, 8, 0}, + {"GrabEventDevice", PT_BOOL, 0, 1, SYNAPTICS_PROP_GRAB, 8, 0}, + {"TapAndDragGesture", PT_BOOL, 0, 1, SYNAPTICS_PROP_GESTURES, 8, 0}, + {"AreaLeftEdge", PT_INT, 0, 10000, SYNAPTICS_PROP_AREA, 32, 0}, --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/119_active_area_touches.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/119_active_area_touches.patch @@ -0,0 +1,100 @@ +From 5c209f9bbb3a786b247ecbc613b7f27435dd3033 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Tue, 29 Mar 2011 10:17:27 -0400 +Subject: [PATCH 1/3] Don't process touches outside active area + +Signed-off-by: Chase Douglas +--- + src/eventcomm.c | 28 ++++++++++++++++++++++++---- + src/synaptics.c | 2 +- + src/synproto.h | 2 ++ + 3 files changed, 27 insertions(+), 5 deletions(-) + +Index: xserver-xorg-input-synaptics/src/eventcomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.c 2011-07-05 11:55:02.771347676 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.c 2011-07-05 11:55:08.771347676 +0300 +@@ -455,7 +455,11 @@ + + if (!priv->has_touch || ecpriv->cur_slot < 0 || + ecpriv->mt_slot_map[ecpriv->cur_slot] == (uint32_t)-1) ++ { ++ if (ecpriv->touch_mask) ++ valuator_mask_zero(ecpriv->touch_mask); + return; ++ } + + if (ecpriv->close_slot) + { +@@ -467,10 +471,27 @@ + } + else + { +- uint16_t type = ecpriv->new_touch ? XI_TouchBegin : XI_TouchUpdate; ++ if (ecpriv->new_touch) ++ { ++ int x_axis = ecpriv->mt_axis_map[ABS_MT_POSITION_X - ABS_MT_TOUCH_MAJOR]; ++ int y_axis = ecpriv->mt_axis_map[ABS_MT_POSITION_Y - ABS_MT_TOUCH_MAJOR]; ++ int x = valuator_mask_get(ecpriv->touch_mask, x_axis); ++ int y = valuator_mask_get(ecpriv->touch_mask, y_axis); ++ ++ if (is_inside_active_area(priv, x, y)) ++ xf86PostTouchEvent(pInfo->dev, ++ ecpriv->mt_slot_map[ecpriv->cur_slot], ++ XI_TouchBegin, 0, ecpriv->touch_mask); ++ else ++ ecpriv->mt_slot_map[ecpriv->cur_slot] = -1; ++ } ++ else ++ { ++ xf86PostTouchEvent(pInfo->dev, ++ ecpriv->mt_slot_map[ecpriv->cur_slot], ++ XI_TouchUpdate, 0, ecpriv->touch_mask); ++ } + +- xf86PostTouchEvent(pInfo->dev, ecpriv->mt_slot_map[ecpriv->cur_slot], +- type, 0, ecpriv->touch_mask); + ecpriv->new_touch = FALSE; + } + +@@ -628,7 +649,7 @@ + ecpriv->cur_vals); + } + } +- else ++ else if (ecpriv->mt_slot_map[ecpriv->cur_slot] != (uint32_t)-1) + ecpriv->close_slot = TRUE; + break; + case ABS_MT_TOUCH_MAJOR: +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2011-07-05 11:55:02.771347676 +0300 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2011-07-05 11:55:08.771347676 +0300 +@@ -1200,7 +1200,7 @@ + * priv->synpara.area_{left|right|top|bottom}_edge are + * all set to zero), the function returns TRUE. + */ +-static Bool ++Bool + is_inside_active_area(SynapticsPrivate *priv, int x, int y) + { + Bool inside_area = TRUE; +Index: xserver-xorg-input-synaptics/src/synproto.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synproto.h 2011-07-05 11:55:02.771347676 +0300 ++++ xserver-xorg-input-synaptics/src/synproto.h 2011-07-05 11:55:08.771347676 +0300 +@@ -81,6 +81,7 @@ + struct _SynapticsParameters; + struct SynapticsHwInfo; + struct CommData; ++struct _SynapticsPrivateRec; + + struct SynapticsProtocolOperations { + int (*DevicePreInitHook)(InputDriverPtr drv, InputInfoPtr pInfo, int flags); +@@ -107,5 +108,6 @@ + + extern int HandleState(InputInfoPtr, struct SynapticsHwState*); + extern CARD32 timerFunc(OsTimerPtr timer, CARD32 now, pointer arg); ++extern Bool is_inside_active_area(struct _SynapticsPrivateRec *priv, int x, int y); + + #endif /* _SYNPROTO_H_ */ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/105_correct_multifinger_click.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/105_correct_multifinger_click.patch @@ -0,0 +1,14 @@ +diff -Nur xfree86-driver-synaptics-0.99.3.orig/src/synaptics.c xfree86-driver-synaptics-0.99.3/src/synaptics.c +--- xfree86-driver-synaptics-0.99.3.orig/src/synaptics.c 2008-12-15 00:33:15.000000000 +0100 ++++ xfree86-driver-synaptics-0.99.3/src/synaptics.c 2009-01-31 18:40:37.000000000 +0100 +@@ -411,8 +411,8 @@ + /* Enable multifinger-click if we don't have right/middle button, + otherwise clickFinger is always button 1. */ + clickFinger1 = 1; +- clickFinger2 = priv->has_right ? 1 : 3; +- clickFinger3 = priv->has_middle ? 1 : 2; ++ clickFinger2 = priv->has_right ? 1 : 2; ++ clickFinger3 = priv->has_middle ? 1 : 3; + + /* Enable vert edge scroll if we can't detect doubletap */ + vertEdgeScroll = priv->has_double ? FALSE : TRUE; --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/118_quell_error_msg.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/118_quell_error_msg.patch @@ -0,0 +1,26 @@ +--- a/tools/synclient.c ++++ b/tools/synclient.c +@@ -406,9 +406,7 @@ + unwind: + XFree(properties); + XFreeDeviceList(info); +- if (!dev) +- fprintf(stderr, "Unable to find a synaptics device.\n"); +- else if (error && dev) { ++ if (error && dev) { + XCloseDevice(dpy, dev); + dev = NULL; + } +--- a/tools/syndaemon.c ++++ b/tools/syndaemon.c +@@ -529,9 +529,7 @@ + unwind: + XFree(properties); + XFreeDeviceList(info); +- if (!dev) +- fprintf(stderr, "Unable to find a synaptics device.\n"); +- else if (error && dev) { ++ if (error && dev) { + XCloseDevice(dpy, dev); + dev = NULL; + } --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/106_always_enable_vert_edge_scroll.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/106_always_enable_vert_edge_scroll.patch @@ -0,0 +1,15 @@ +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2011-07-05 11:54:48.311347674 +0300 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2011-07-05 11:54:51.321347674 +0300 +@@ -499,8 +499,8 @@ + clickFinger2 = (priv->has_right || priv->has_middle) ? 1 : 3; + clickFinger3 = (priv->has_right || priv->has_middle) ? 1 : 2; + +- /* Enable vert edge scroll if we can't detect doubletap */ +- vertEdgeScroll = priv->has_double ? FALSE : TRUE; ++ /* Enable vert edge scroll */ ++ vertEdgeScroll = TRUE; + horizEdgeScroll = FALSE; + + /* Enable twofinger scroll if we can detect doubletap */ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/02-do-not-use-synaptics-for-keyboards.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/02-do-not-use-synaptics-for-keyboards.patch @@ -0,0 +1,60 @@ +do not use the synaptics driver for devices advertising themselves as keyboards +http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=524130 + +Index: xserver-xorg-input-synaptics/conf/11-x11-synaptics.fdi +=================================================================== +--- xserver-xorg-input-synaptics.orig/conf/11-x11-synaptics.fdi 2009-11-21 13:15:39.064182104 +0900 ++++ xserver-xorg-input-synaptics/conf/11-x11-synaptics.fdi 2009-11-21 13:16:23.404256090 +0900 +@@ -2,27 +2,31 @@ + + + +- synaptics +- +- ++ ++ ++ synaptics ++ ++ ++ + + + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/124_syndaemon_events.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/124_syndaemon_events.patch @@ -0,0 +1,41 @@ +From b68ca129acfe56714a79230aa07c2b4b0249fb42 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Fri, 15 Apr 2011 15:23:17 -0400 +Subject: [PATCH xf86-input-synaptics] Drain XRecord connection of any events after handling replies + +If the X server sends an event to the XRecord connection the event +will never be handled. This will cause the event queue to fill up in +Xlib and lead to syndaemon running away at 100% cpu usage. + +This change drains any events from the connection. It's not a fix for +the underlying bug in the server or Xlib, but it does paper over the +issue for now. + +https://bugs.launchpad.net/bugs/754470 +http://bugs.freedesktop.org/show_bug.cgi?id=31921 + +Signed-off-by: Chase Douglas +--- +I'm offering this up as a work around for whatever real bug exists. It +probably should not be committed upstream though. + + tools/syndaemon.c | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +--- a/tools/syndaemon.c ++++ b/tools/syndaemon.c +@@ -450,6 +450,14 @@ + event.type); + } + ++ /* If there are any events left over, they are in error. Drain them ++ * from the connection queue so we don't get stuck. */ ++ while (XEventsQueued(dpy_data, QueuedAlready) > 0) { ++ XEvent event; ++ XNextEvent(dpy_data, &event); ++ fprintf(stderr, "bad event received, major opcode %d\n", event.type); ++ } ++ + if (!ignore_modifier_keys && cbres.key_event) { + disable_event = 1; + } --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch @@ -0,0 +1,18 @@ +Do not grab the synaptics device if not running on the current VT. +This helps when switching user or more in general when running more than one +instance of Xorg. + +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2011-01-25 21:55:50.000000000 +1100 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2011-01-25 22:06:10.496826002 +1100 +@@ -703,6 +703,9 @@ + return BadAlloc; + } + ++ if (xf86Screens[0]->vtSema == FALSE) ++ return !Success; ++ + /* may change pInfo->options */ + SetDeviceAndProtocol(pInfo); + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/125_option_rec_revert.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/125_option_rec_revert.patch @@ -0,0 +1,252 @@ +--- a/test/fake-symbols.c ++++ b/test/fake-symbols.c +@@ -26,7 +26,7 @@ + } + + _X_EXPORT int +-xf86OpenSerial(OPTTYPE options) ++xf86OpenSerial(pointer options) + { + return 0; + } +@@ -37,44 +37,44 @@ + return 0; + } + +-_X_EXPORT OPTTYPE +-xf86ReplaceIntOption(OPTTYPE optlist, const char *name, const int val) ++_X_EXPORT pointer ++xf86ReplaceIntOption(pointer optlist, const char *name, const int val) + { + return NULL; + } + + _X_EXPORT char * +-xf86SetStrOption(OPTTYPE optlist, const char *name, CONST char *deflt) ++xf86SetStrOption(pointer optlist, const char *name, char *deflt) + { + return NULL; + } + + _X_EXPORT int +-xf86SetBoolOption(OPTTYPE optlist, const char *name, int deflt) ++xf86SetBoolOption(pointer optlist, const char *name, int deflt) + { + return 0; + } + +-_X_EXPORT OPTTYPE +-xf86AddNewOption(OPTTYPE head, const char *name, const char *val) ++_X_EXPORT pointer ++xf86AddNewOption(pointer head, const char *name, const char *val) + { + return NULL; + } + +-_X_EXPORT CONST char * +-xf86FindOptionValue(OPTTYPE options, const char *name) ++_X_EXPORT char * ++xf86FindOptionValue(pointer options, const char *name) + { + return NULL; + } + + _X_EXPORT char * +-xf86OptionName(OPTTYPE opt) ++xf86OptionName(pointer opt) + { + return NULL; + } + + _X_EXPORT char * +-xf86OptionValue(OPTTYPE opt) ++xf86OptionValue(pointer opt) + { + return NULL; + } +@@ -86,7 +86,7 @@ + } + + _X_EXPORT char * +-xf86CheckStrOption(OPTTYPE optlist, const char *name, char *deflt) ++xf86CheckStrOption(pointer optlist, const char *name, char *deflt) + { + return NULL; + } +@@ -185,8 +185,8 @@ + return; + } + +-_X_EXPORT OPTTYPE +-xf86OptionListDuplicate(OPTTYPE options) ++_X_EXPORT pointer ++xf86OptionListDuplicate(pointer options) + { + return NULL; + } +@@ -213,7 +213,7 @@ + } + + _X_EXPORT int +-xf86SetIntOption(OPTTYPE optlist, const char *name, int deflt) ++xf86SetIntOption(pointer optlist, const char *name, int deflt) + { + return 0; + } +@@ -240,7 +240,7 @@ + _X_EXPORT int + XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type, + int format, int mode, unsigned long len, +- OPTTYPE value, Bool sendevent) ++ pointer value, Bool sendevent) + { + return 0; + } +@@ -344,14 +344,14 @@ + return FALSE; + } + +-_X_EXPORT OPTTYPE +-xf86ReplaceStrOption(OPTTYPE optlist, const char *name, const char *val) ++_X_EXPORT pointer ++xf86ReplaceStrOption(pointer optlist, const char *name, const char *val) + { + return NULL; + } + +-_X_EXPORT OPTTYPE +-xf86NextOption(OPTTYPE list) ++_X_EXPORT pointer ++xf86NextOption(pointer list) + { + return NULL; + } +@@ -393,13 +393,13 @@ + + #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 + void +-xf86ProcessCommonOptions(InputInfoPtr pInfo, OPTTYPE list) ++xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer list) + { + } + + void + xf86CollectInputOptions(InputInfoPtr pInfo, +- const char **defaultOpts, OPTTYPE extraOpts) ++ const char **defaultOpts, pointer extraOpts) + { + } + +--- a/test/fake-symbols.h ++++ b/test/fake-symbols.h +@@ -1,40 +1,32 @@ + #include + #include + +-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 14 +-#define OPTTYPE XF86OptionPtr +-#define CONST const +-#else +-#define OPTTYPE pointer +-#define CONST +-#endif +- + extern int xf86ReadSerial(int fd, void *buf, int count); + extern int xf86WriteSerial(int fd, const void *buf, int count); + extern int xf86CloseSerial(int fd); + extern int xf86WaitForInput(int fd, int timeout); +-extern int xf86OpenSerial(OPTTYPE options); ++extern int xf86OpenSerial(pointer options); + extern int xf86SetSerialSpeed(int fd, int speed); + +-extern OPTTYPE xf86ReplaceIntOption(OPTTYPE optlist, const char *name, ++extern pointer xf86ReplaceIntOption(pointer optlist, const char *name, + const int val); +-extern OPTTYPE xf86AddNewOption(OPTTYPE head, const char *name, ++extern pointer xf86AddNewOption(pointer head, const char *name, + const char *val); +-extern char *xf86OptionName(OPTTYPE opt); +-extern CONST char *xf86FindOptionValue(OPTTYPE options, const char *name); ++extern char *xf86OptionName(pointer opt); ++extern char *xf86FindOptionValue(pointer options, const char *name); + extern int xf86NameCmp(const char *s1, const char *s2); +-extern char *xf86CheckStrOption(OPTTYPE optlist, const char *name, char *deflt); ++extern char *xf86CheckStrOption(pointer optlist, const char *name, char *deflt); + +-extern char *xf86SetStrOption(OPTTYPE optlist, const char *name, +- CONST char *deflt); +-extern int xf86SetBoolOption(OPTTYPE optlist, const char *name, int deflt); +-extern OPTTYPE xf86AddNewOption(OPTTYPE head, const char *name, ++extern char *xf86SetStrOption(pointer optlist, const char *name, ++ char *deflt); ++extern int xf86SetBoolOption(pointer optlist, const char *name, int deflt); ++extern pointer xf86AddNewOption(pointer head, const char *name, + const char *val); +-extern CONST char *xf86FindOptionValue(OPTTYPE options, const char *name); +-extern char *xf86OptionName(OPTTYPE opt); +-extern char *xf86OptionValue(OPTTYPE opt); ++extern char *xf86FindOptionValue(pointer options, const char *name); ++extern char *xf86OptionName(pointer opt); ++extern char *xf86OptionValue(pointer opt); + extern int xf86NameCmp(const char *s1, const char *s2); +-extern char *xf86CheckStrOption(OPTTYPE optlist, const char *name, char *deflt); ++extern char *xf86CheckStrOption(pointer optlist, const char *name, char *deflt); + extern void xf86AddEnabledDevice(InputInfoPtr pInfo); + extern void xf86RemoveEnabledDevice(InputInfoPtr pInfo); + extern Atom XIGetKnownProperty(char *name); +@@ -60,7 +52,7 @@ + + extern InputInfoPtr xf86FirstLocalDevice(void); + extern void xf86DeleteInput(InputInfoPtr pInp, int flags); +-extern OPTTYPE xf86OptionListDuplicate(OPTTYPE options); ++extern pointer xf86OptionListDuplicate(pointer options); + extern Bool + + InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom *labels, +@@ -73,7 +65,7 @@ + extern void + xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code, int is_down); + extern int +- xf86SetIntOption(OPTTYPE optlist, const char *name, int deflt); ++ xf86SetIntOption(pointer optlist, const char *name, int deflt); + extern void + + xf86PostButtonEventP(DeviceIntPtr device, +@@ -91,7 +83,7 @@ + + XIChangeDeviceProperty(DeviceIntPtr dev, Atom property, Atom type, + int format, int mode, unsigned long len, +- OPTTYPE value, Bool sendevent); ++ pointer value, Bool sendevent); + extern CARD32 GetTimeInMillis(void); + + extern int +@@ -143,10 +135,10 @@ + InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels, + int numMotionEvents, int mode); + +-extern OPTTYPE +-xf86ReplaceStrOption(OPTTYPE optlist, const char *name, const char *val); ++extern pointer ++xf86ReplaceStrOption(pointer optlist, const char *name, const char *val); + +-extern OPTTYPE xf86NextOption(OPTTYPE list); ++extern pointer xf86NextOption(pointer list); + + extern int + +@@ -169,12 +161,12 @@ + + #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 + extern void +- xf86ProcessCommonOptions(InputInfoPtr pInfo, OPTTYPE list); ++ xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer list); + + extern void + + xf86CollectInputOptions(InputInfoPtr pInfo, +- const char **defaultOpts, OPTTYPE extraOpts); ++ const char **defaultOpts, pointer extraOpts); + + extern InputInfoPtr xf86AllocateInput(InputDriverPtr drv, int flags); + --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/series +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/series @@ -0,0 +1,23 @@ +#01-synaptics-dont-grab-if-not-on-current-VT.patch +02-do-not-use-synaptics-for-keyboards.patch + +101_resolution_detect_option.patch +103_enable_cornertapping.patch +104_always_enable_tapping.patch +#105_correct_multifinger_click.patch +106_always_enable_vert_edge_scroll.patch +115_evdev_only.patch +#116_xi2_1.patch +#117_gestures.patch +118_quell_error_msg.patch +#119_active_area_touches.patch +#120_active_touches_num_fingers.patch +#121_semi-mt_num_fingers.patch +#123_order_ProcessTouch_for_numFingers.patch +124_syndaemon_events.patch +125_option_rec_revert.patch +126_ubuntu_xi22.patch +128_disable_three_click_action.patch +129_disable_three_touch_tap.patch +130_dont_enable_rightbutton_area.patch +131_reset-num_active_touches-on-deviceoff.patch --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/121_semi-mt_num_fingers.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/121_semi-mt_num_fingers.patch @@ -0,0 +1,155 @@ +From 07af5bb64e1dae33ef463b71957564111aa532ab Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Tue, 29 Mar 2011 12:11:28 -0400 +Subject: [PATCH 3/3] Add fixes for semi-multitouch devices with integrated buttons + +Some machines, such as early Dell Mini series, have synaptics trackpads +that provide semi-multitouch data and have integrated left and right +buttons at the bottom of the trackpad. Special care must be taken to +ensure these trackpads function correctly, otherwise a button press with +one finger and a drag with another finger may end up sending a two +finger scroll event. + +This patch implements the following: + +1. When the first or second touch begins on a semi-mt device, the touch + bounding box must be entirely in the trackpad active area or else the + active touch count is not incremented. +2. The maximum active touch count is 2 for a semi-mt device, but more + fingers may be reported through BTN_*TAP events. If the active touch + count is 2, use the BTN_*TAP events for determining the number of + fingers on the touchpad. Otherwise, use the active touch count. + +Signed-off-by: Chase Douglas +--- + src/eventcomm.c | 59 +++++++++++++++++++++++++++++++++++++++++-------------- + src/eventcomm.h | 5 ++++ + 2 files changed, 49 insertions(+), 15 deletions(-) + +Index: xserver-xorg-input-synaptics/src/eventcomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.c 2011-07-05 11:55:10.801347676 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.c 2011-07-05 11:55:12.731347678 +0300 +@@ -414,11 +414,6 @@ + xf86Msg(X_PROBED, "%s: buttons:%s\n", pInfo->name, buf); + } + +- /* We don't support SemiMultitouch devices yet. */ +- SYSCALL(rc = ioctl(pInfo->fd, EVIOCGPROP(sizeof(prop)), &prop)); +- if (rc >= 0 && (prop & INPUT_PROP_SEMI_MT)) +- return; +- + for (i = ABS_MT_TOUCH_MAJOR; i <= ABS_MT_PRESSURE; i++) { + if (!BitIsOn(ecpriv->absbits, i)) + continue; +@@ -432,6 +427,16 @@ + ecpriv->mt_axis_map[i - ABS_MT_TOUCH_MAJOR] = ecpriv->num_mt_axes++; + priv->has_touch = TRUE; + } ++ ++ if (priv->has_touch) { ++ /* We don't support SemiMultitouch devices yet. */ ++ SYSCALL(rc = ioctl(pInfo->fd, EVIOCGPROP(sizeof(prop)), &prop)); ++ if (rc >= 0 && (prop & INPUT_PROP_SEMI_MT)) ++ ecpriv->semi_mt = TRUE; ++ else ++ ecpriv->semi_mt = FALSE; ++ } ++ + } + + static Bool +@@ -462,10 +467,11 @@ + } + + if (ecpriv->close_slot) +- { +- xf86PostTouchEvent(pInfo->dev, +- ecpriv->mt_slot_map[ecpriv->cur_slot], +- XI_TouchEnd, 0, ecpriv->touch_mask); ++ { ++ if (!ecpriv->semi_mt) ++ xf86PostTouchEvent(pInfo->dev, ++ ecpriv->mt_slot_map[ecpriv->cur_slot], ++ XI_TouchEnd, 0, ecpriv->touch_mask); + ecpriv->mt_slot_map[ecpriv->cur_slot] = -1; + ecpriv->close_slot = FALSE; + ecpriv->active_touches--; +@@ -479,17 +485,22 @@ + int x = valuator_mask_get(ecpriv->touch_mask, x_axis); + int y = valuator_mask_get(ecpriv->touch_mask, y_axis); + +- if (is_inside_active_area(priv, x, y)) ++ if ((!ecpriv->semi_mt && is_inside_active_area(priv, x, y)) || ++ (ecpriv->semi_mt && ++ (is_inside_active_area(priv, ecpriv->min_x, ecpriv->min_y) && ++ (ecpriv->active_touches == 0 || ++ is_inside_active_area(priv, ecpriv->max_x, ecpriv->max_y))))) + { +- xf86PostTouchEvent(pInfo->dev, +- ecpriv->mt_slot_map[ecpriv->cur_slot], +- XI_TouchBegin, 0, ecpriv->touch_mask); ++ if (!ecpriv->semi_mt) ++ xf86PostTouchEvent(pInfo->dev, ++ ecpriv->mt_slot_map[ecpriv->cur_slot], ++ XI_TouchBegin, 0, ecpriv->touch_mask); + ecpriv->active_touches++; + } + else + ecpriv->mt_slot_map[ecpriv->cur_slot] = -1; + } +- else ++ else if (!ecpriv->semi_mt) + { + xf86PostTouchEvent(pInfo->dev, + ecpriv->mt_slot_map[ecpriv->cur_slot], +@@ -544,7 +555,7 @@ + case EV_SYN: + switch (ev->code) { + case SYN_REPORT: +- if (priv->has_touch) ++ if (priv->has_touch && ecpriv->active_touches < 2) + hw->numFingers = ecpriv->active_touches; + else if (comm->oneFinger) + hw->numFingers = 1; +@@ -676,6 +687,24 @@ + valuator_mask_set(ecpriv->cur_vals, + ecpriv->mt_axis_map[ev->code - ABS_MT_TOUCH_MAJOR], + ev->value); ++ ++ if (ecpriv->semi_mt) ++ { ++ if (ev->code == ABS_MT_POSITION_X) ++ { ++ if (ecpriv->cur_slot == 0) ++ ecpriv->min_x = ev->value; ++ else ++ ecpriv->max_x = ev->value; ++ } ++ else if (ev->code == ABS_MT_POSITION_Y) ++ { ++ if (ecpriv->cur_slot == 0) ++ ecpriv->min_y = ev->value; ++ else ++ ecpriv->max_y = ev->value; ++ } ++ } + } + break; + } +Index: xserver-xorg-input-synaptics/src/eventcomm.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.h 2011-07-05 11:55:10.801347676 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.h 2011-07-05 11:55:12.731347678 +0300 +@@ -59,6 +59,11 @@ + struct mtdev *mtdev; + struct grail *grail; + int active_touches; ++ Bool semi_mt; ++ int min_x; ++ int max_x; ++ int min_y; ++ int max_y; + } EventcommPrivate; + + extern Bool EventProcessEvent(InputInfoPtr pInfo, struct CommData *comm, --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/117_gestures.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/117_gestures.patch @@ -0,0 +1,868 @@ +Index: xserver-xorg-input-synaptics/configure.ac +=================================================================== +--- xserver-xorg-input-synaptics.orig/configure.ac 2011-07-05 11:54:55.781347674 +0300 ++++ xserver-xorg-input-synaptics/configure.ac 2011-07-05 11:55:02.771347676 +0300 +@@ -104,6 +104,10 @@ + + # Obtain compiler/linker options for mtdev + PKG_CHECK_MODULES(MTDEV, mtdev) ++ ++ # Obtain compiler/linker options for grail ++ PKG_CHECK_MODULES(GRAIL, utouch-grail) ++ AC_DEFINE(GESTURES, 1, Needed to interpret xorg headers properly) + ;; + *freebsd* | *openbsd* | *netbsd* | *dragonfly*) + AC_MSG_RESULT([psmcomm]) +Index: xserver-xorg-input-synaptics/src/Makefile.am +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/Makefile.am 2011-07-05 11:54:55.781347674 +0300 ++++ xserver-xorg-input-synaptics/src/Makefile.am 2011-07-05 11:55:02.771347676 +0300 +@@ -39,8 +39,8 @@ + + if BUILD_EVENTCOMM + @DRIVER_NAME@_drv_la_SOURCES += \ +- eventcomm.c eventcomm.h +-@DRIVER_NAME@_drv_la_LIBADD = $(MTDEV_LIBS) ++ eventcomm.c eventcomm.h grail.c ++@DRIVER_NAME@_drv_la_LIBADD = $(MTDEV_LIBS) $(GRAIL_LIBS) + endif + + if BUILD_PSMCOMM +Index: xserver-xorg-input-synaptics/src/eventcomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.c 2011-07-05 11:54:55.781347674 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.c 2011-07-05 11:55:02.771347676 +0300 +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + + + #define SYSCALL(call) while (((call) == -1) && (errno == EINTR)) +@@ -186,28 +187,13 @@ + ecpriv->cur_slot = abs.value; + } + +- ecpriv->mtdev = malloc(sizeof(struct mtdev)); +- if (!ecpriv->mtdev) +- return; +- +- if (mtdev_open(ecpriv->mtdev, pInfo->fd)) { +- free(ecpriv->mtdev); +- ecpriv->mtdev = NULL; +- return; +- } ++ GrailOpen(pInfo); + } + + static void + EventDeviceOffHook(InputInfoPtr pInfo) + { +- SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; +- EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; +- +- if (ecpriv->mtdev) { +- mtdev_close(ecpriv->mtdev); +- free(ecpriv->mtdev); +- ecpriv->mtdev = NULL; +- } ++ GrailClose(pInfo); + } + + static void +@@ -499,9 +485,8 @@ + int rc = TRUE; + ssize_t len; + +- if (ecpriv->mtdev) +- len = mtdev_get(ecpriv->mtdev, pInfo->fd, ev, 1) * +- sizeof(struct input_event); ++ if (ecpriv->grail) ++ len = grail_pull(ecpriv->grail, pInfo->fd); + else + len = read(pInfo->fd, ev, sizeof(*ev)); + +@@ -511,167 +496,182 @@ + if (errno != EAGAIN) + xf86MsgVerb(X_NONE, 0, "%s: Read error %s\n", pInfo->name, strerror(errno)); + rc = FALSE; +- } else if (len % sizeof(*ev)) { ++ } else if (ecpriv->grail) ++ rc = FALSE; ++ else if (len % sizeof(*ev)) { + xf86MsgVerb(X_NONE, 0, "%s: Read error, invalid number of bytes.", pInfo->name); + rc = FALSE; + } + return rc; + } + +-static Bool +-EventReadHwState(InputInfoPtr pInfo, +- struct SynapticsProtocolOperations *proto_ops, +- struct CommData *comm, struct SynapticsHwState *hwRet) ++Bool ++EventProcessEvent(InputInfoPtr pInfo, struct CommData *comm, ++ struct SynapticsHwState *hwRet, const struct input_event *ev) + { +- struct input_event ev; +- Bool v; +- struct SynapticsHwState *hw = &(comm->hwState); + SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; +- SynapticsParameters *para = &priv->synpara; + EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ SynapticsParameters *para = &priv->synpara; ++ struct SynapticsHwState *hw = &(comm->hwState); ++ Bool v; + +- while (SynapticsReadEvent(pInfo, &ev)) { +- switch (ev.type) { +- case EV_SYN: +- switch (ev.code) { +- case SYN_REPORT: +- if (comm->oneFinger) +- hw->numFingers = 1; +- else if (comm->twoFingers) +- hw->numFingers = 2; +- else if (comm->threeFingers) +- hw->numFingers = 3; +- else +- hw->numFingers = 0; +- *hwRet = *hw; ++ switch (ev->type) { ++ case EV_SYN: ++ switch (ev->code) { ++ case SYN_REPORT: ++ if (comm->oneFinger) ++ hw->numFingers = 1; ++ else if (comm->twoFingers) ++ hw->numFingers = 2; ++ else if (comm->threeFingers) ++ hw->numFingers = 3; ++ else ++ hw->numFingers = 0; ++ *hwRet = *hw; ++ ProcessTouch(pInfo, priv); ++ return TRUE; ++ } ++ case EV_KEY: ++ v = (ev->value ? TRUE : FALSE); ++ switch (ev->code) { ++ case BTN_LEFT: ++ hw->left = v; ++ break; ++ case BTN_RIGHT: ++ hw->right = v; ++ break; ++ case BTN_MIDDLE: ++ hw->middle = v; ++ break; ++ case BTN_FORWARD: ++ hw->up = v; ++ break; ++ case BTN_BACK: ++ hw->down = v; ++ break; ++ case BTN_0: ++ hw->multi[0] = v; ++ break; ++ case BTN_1: ++ hw->multi[1] = v; ++ break; ++ case BTN_2: ++ hw->multi[2] = v; ++ break; ++ case BTN_3: ++ hw->multi[3] = v; ++ break; ++ case BTN_4: ++ hw->multi[4] = v; ++ break; ++ case BTN_5: ++ hw->multi[5] = v; ++ break; ++ case BTN_6: ++ hw->multi[6] = v; ++ break; ++ case BTN_7: ++ hw->multi[7] = v; ++ break; ++ case BTN_TOOL_FINGER: ++ comm->oneFinger = v; ++ break; ++ case BTN_TOOL_DOUBLETAP: ++ comm->twoFingers = v; ++ break; ++ case BTN_TOOL_TRIPLETAP: ++ comm->threeFingers = v; ++ break; ++ case BTN_TOUCH: ++ if (!priv->has_pressure) ++ hw->z = v ? para->finger_high + 1 : 0; ++ break; ++ } ++ break; ++ case EV_ABS: ++ switch (ev->code) { ++ case ABS_X: ++ hw->x = ev->value; ++ break; ++ case ABS_Y: ++ hw->y = ev->value; ++ break; ++ case ABS_PRESSURE: ++ hw->z = ev->value; ++ break; ++ case ABS_TOOL_WIDTH: ++ hw->fingerWidth = ev->value; ++ break; ++ case ABS_MT_SLOT: ++ if (priv->has_touch) ++ { + ProcessTouch(pInfo, priv); +- return TRUE; +- } +- break; +- case EV_KEY: +- v = (ev.value ? TRUE : FALSE); +- switch (ev.code) { +- case BTN_LEFT: +- hw->left = v; +- break; +- case BTN_RIGHT: +- hw->right = v; +- break; +- case BTN_MIDDLE: +- hw->middle = v; +- break; +- case BTN_FORWARD: +- hw->up = v; +- break; +- case BTN_BACK: +- hw->down = v; +- break; +- case BTN_0: +- hw->multi[0] = v; +- break; +- case BTN_1: +- hw->multi[1] = v; +- break; +- case BTN_2: +- hw->multi[2] = v; +- break; +- case BTN_3: +- hw->multi[3] = v; +- break; +- case BTN_4: +- hw->multi[4] = v; +- break; +- case BTN_5: +- hw->multi[5] = v; +- break; +- case BTN_6: +- hw->multi[6] = v; +- break; +- case BTN_7: +- hw->multi[7] = v; +- break; +- case BTN_TOOL_FINGER: +- comm->oneFinger = v; +- break; +- case BTN_TOOL_DOUBLETAP: +- comm->twoFingers = v; +- break; +- case BTN_TOOL_TRIPLETAP: +- comm->threeFingers = v; +- break; +- case BTN_TOUCH: +- if (!priv->has_pressure) +- hw->z = v ? para->finger_high + 1 : 0; +- break; +- } +- break; +- case EV_ABS: +- switch (ev.code) { +- case ABS_X: +- hw->x = ev.value; +- break; +- case ABS_Y: +- hw->y = ev.value; +- break; +- case ABS_PRESSURE: +- hw->z = ev.value; +- break; +- case ABS_TOOL_WIDTH: +- hw->fingerWidth = ev.value; +- break; +- case ABS_MT_SLOT: +- if (priv->has_touch) +- { +- ProcessTouch(pInfo, priv); +- ecpriv->cur_slot = ev.value; +- } ++ ecpriv->cur_slot = ev->value; ++ } ++ break; ++ case ABS_MT_TRACKING_ID: ++ if (ecpriv->cur_slot < 0) + break; +- case ABS_MT_TRACKING_ID: +- if (ecpriv->cur_slot < 0) +- break; +- if (ev.value >= 0) ++ if (ev->value >= 0) ++ { ++ if (ecpriv->mt_slot_map[ecpriv->cur_slot] != (uint32_t)-1) + { +- if (ecpriv->mt_slot_map[ecpriv->cur_slot] != (uint32_t)-1) +- { +- xf86Msg(X_WARNING, "%s: Ignoring new tracking ID for " +- "existing touch.\n", pInfo->dev->name); +- } +- else +- { +- ecpriv->mt_slot_map[ecpriv->cur_slot] = +- ecpriv->next_touch_id++; +- ecpriv->new_touch = TRUE; +- valuator_mask_copy(ecpriv->touch_mask, +- ecpriv->cur_vals); +- } ++ xf86Msg(X_WARNING, "%s: Ignoring new tracking ID for " ++ "existing touch.\n", pInfo->dev->name); + } + else +- ecpriv->close_slot = TRUE; +- break; +- case ABS_MT_TOUCH_MAJOR: +- case ABS_MT_TOUCH_MINOR: +- case ABS_MT_WIDTH_MAJOR: +- case ABS_MT_WIDTH_MINOR: +- case ABS_MT_ORIENTATION: +- case ABS_MT_POSITION_X: +- case ABS_MT_POSITION_Y: +- case ABS_MT_TOOL_TYPE: +- case ABS_MT_BLOB_ID: +- case ABS_MT_PRESSURE: +- if (ecpriv->cur_slot >= 0) + { +- valuator_mask_set(ecpriv->touch_mask, +- ecpriv->mt_axis_map[ev.code - ABS_MT_TOUCH_MAJOR], +- ev.value); +- valuator_mask_set(ecpriv->cur_vals, +- ecpriv->mt_axis_map[ev.code - ABS_MT_TOUCH_MAJOR], +- ev.value); ++ ecpriv->mt_slot_map[ecpriv->cur_slot] = ++ ecpriv->next_touch_id++; ++ ecpriv->new_touch = TRUE; ++ valuator_mask_copy(ecpriv->touch_mask, ++ ecpriv->cur_vals); + } +- break; +- } +- break; +- } ++ } ++ else ++ ecpriv->close_slot = TRUE; ++ break; ++ case ABS_MT_TOUCH_MAJOR: ++ case ABS_MT_TOUCH_MINOR: ++ case ABS_MT_WIDTH_MAJOR: ++ case ABS_MT_WIDTH_MINOR: ++ case ABS_MT_ORIENTATION: ++ case ABS_MT_POSITION_X: ++ case ABS_MT_POSITION_Y: ++ case ABS_MT_TOOL_TYPE: ++ case ABS_MT_BLOB_ID: ++ case ABS_MT_PRESSURE: ++ if (ecpriv->cur_slot >= 0) ++ { ++ valuator_mask_set(ecpriv->touch_mask, ++ ecpriv->mt_axis_map[ev->code - ABS_MT_TOUCH_MAJOR], ++ ev->value); ++ valuator_mask_set(ecpriv->cur_vals, ++ ecpriv->mt_axis_map[ev->code - ABS_MT_TOUCH_MAJOR], ++ ev->value); ++ } ++ break; ++ } ++ break; ++ } ++ ++ return FALSE; ++} ++ ++static Bool ++EventReadHwState(InputInfoPtr pInfo, ++ struct SynapticsProtocolOperations *proto_ops, ++ struct CommData *comm, struct SynapticsHwState *hwRet) ++{ ++ SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; ++ EventcommPrivate *ecpriv = (EventcommPrivate *)priv->proto_data; ++ struct input_event ev; ++ ++ while (SynapticsReadEvent(pInfo, &ev)) { ++ if (EventProcessEvent(pInfo, comm, hwRet, &ev) && !ecpriv->grail) ++ return TRUE; + } ++ + return FALSE; + } + +Index: xserver-xorg-input-synaptics/src/eventcomm.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.h 2011-07-05 11:54:55.781347674 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.h 2011-07-05 11:55:02.771347676 +0300 +@@ -32,12 +32,15 @@ + #include + #include + #include ++#include ++#include "synproto.h" + + /* for auto-dev: */ + #define DEV_INPUT_EVENT "/dev/input" + #define EVENT_DEV_NAME "event" + + struct mtdev; ++struct grail; + + typedef struct { + BOOL need_grab; +@@ -54,6 +57,13 @@ + int num_mt_axes; + int num_touches; + struct mtdev *mtdev; ++ struct grail *grail; + } EventcommPrivate; + ++extern Bool EventProcessEvent(InputInfoPtr pInfo, struct CommData *comm, ++ struct SynapticsHwState *hwRet, ++ const struct input_event *ev); ++extern int GrailOpen(InputInfoPtr pInfo); ++extern void GrailClose(InputInfoPtr pInfo); ++ + #endif /* _EVENTCOMM_H_ */ +Index: xserver-xorg-input-synaptics/src/grail.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xserver-xorg-input-synaptics/src/grail.c 2011-07-05 11:55:02.771347676 +0300 +@@ -0,0 +1,376 @@ ++/* ++ * Copyright © 2010 Canonical, Ltd. ++ * ++ * Permission to use, copy, modify, distribute, and sell this software ++ * and its documentation for any purpose is hereby granted without ++ * fee, provided that the above copyright notice appear in all copies ++ * and that both that copyright notice and this permission notice ++ * appear in supporting documentation, and that the name of Red Hat ++ * not be used in advertising or publicity pertaining to distribution ++ * of the software without specific, written prior permission. Red ++ * Hat makes no representations about the suitability of this software ++ * for any purpose. It is provided "as is" without express or implied ++ * warranty. ++ * ++ * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, ++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN ++ * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR ++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS ++ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, ++ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * Authors: ++ * Chase Douglas (chase.douglas@canonical.com) ++ */ ++ ++/* So we can get at the right data in xorg/windowstr.h */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include "synaptics.h" ++#include "synapticsstr.h" ++#include "eventcomm.h" ++ ++//#include "gestureproto.h" ++ ++/* ++ * Provided by the Maverick X server, we don't want to pollute the official ++ * X.org API. ++ */ ++extern _X_EXPORT void xf86PostGestureEvent(DeviceIntPtr dev, unsigned short x, ++ unsigned short y, unsigned short client_id, ++ unsigned short gesture_id, unsigned short gesture_type, ++ Window root, Window event, Window child, ++ unsigned short status, unsigned short num_props, ++ float *props); ++ ++static WindowPtr CommonAncestor(WindowPtr a, WindowPtr b) ++{ ++ WindowPtr c; ++ ++ if (a == b) ++ return a; ++ ++ for (b = b; b; b = b->parent) ++ for (c = a; c; c = c->parent) ++ if (c == b) ++ return b; ++ ++ return NullWindow; ++} ++ ++static WindowPtr GetWindowForGestures(struct grail *grail, ++ const struct grail_coord *contacts, ++ int num_contacts) ++{ ++ WindowPtr window = NULL; ++ int i; ++ ++ for (i = 0; i < num_contacts; i++) ++ { ++ float screen_x = contacts[i].x; ++ float screen_y = contacts[i].y; ++ WindowPtr this_window; ++ ++ this_window = xf86CoordinatesToWindow(screen_x, screen_y, 0); ++ if (!this_window) ++ return NullWindow; ++ ++ if (!window) ++ window = this_window; ++ else ++ window = CommonAncestor(window, this_window); ++ } ++ ++ return window; ++} ++ ++static int GetClients(struct grail *grail, ++ struct grail_client_info *clients, int max_clients, ++ const struct grail_coord *contacts, int num_contacts, ++ const grail_mask_t *types, int type_bytes) ++{ ++ WindowPtr child_window; ++ WindowPtr window; ++ WindowPtr root_window; ++ InputInfoPtr pInfo = grail->priv; ++ DeviceIntPtr master = pInfo->dev->u.master; ++ struct grail_coord cursor_coord; ++ int j; ++ int found_match = 0; ++ int num_clients = 0; ++ int type; ++ ++ if (max_clients <= 0) ++ return 0; ++ ++ /* If this mouse isn't hooked up to a cursor, don't do anything */ ++ if (!master) ++ return 0; ++ ++ cursor_coord.x = master->last.valuators[0]; ++ cursor_coord.y = master->last.valuators[1]; ++ ++ child_window = GetWindowForGestures(grail, &cursor_coord, 1); ++ ++ if (!child_window) ++ return 0; ++ ++ memset(clients, 0, sizeof(struct grail_client_info) * max_clients); ++ ++ /* Find the root window. */ ++ for (root_window = child_window; root_window->parent; ++ root_window = root_window->parent); ++ ++ /* ++ * Check for a root client with SYSFLAG1 set. SYSFLAG1 is effectively an ++ * active grab for system gestures. We assume only one client has SYSFLAG1 ++ * set. ++ */ ++ window = child_window; ++ while (window) ++ { ++ /* Check if any gestures have been selected on this window. */ ++ if (wGestureMasks(window)) ++ { ++ GestureClientsPtr client; ++ ++ /* For each client */ ++ for (client = wGestureMasks(window)->clients; client; ++ client = client->next) ++ { ++ int first = 1; ++ ++ /* If the client has set the SYSFLAG1 bit */ ++ if (BitIsOn(client->gestureMask[0], GRAIL_TYPE_SYSFLAG1)) ++ { ++ /* For each recognized gesture */ ++ grail_mask_foreach(type, types, type_bytes) ++ { ++ if (type == GRAIL_TYPE_SYSFLAG1) ++ continue; ++ ++ /* ++ * Check if this client selected for this gesture. ++ * Request may be for this device or all devices. ++ */ ++ if (BitIsOn(client->gestureMask[pInfo->dev->id], type) || ++ BitIsOn(client->gestureMask[0], type)) ++ { ++ if (first) { ++ /* Set up new client in array */ ++ clients[0].id.client = CLIENT_ID(client->resource); ++ clients[0].id.root = root_window->drawable.id; ++ clients[0].id.child = child_window->drawable.id; ++ clients[0].id.event = window->drawable.id; ++ grail_mask_clear(clients[0].mask, ++ DIM_GRAIL_TYPE_BYTES); ++ first = 0; ++ } ++ ++ /* Set this gesture bit in the client's gesture mask */ ++ SetBit(clients[0].mask, type); ++ num_clients = 1; ++ } ++ } ++ ++ /* ++ * Either we found a gesture, or we stop looking for SYSFLAG1 ++ * clients. ++ */ ++ if (num_clients) { ++ SetBit(clients[0].mask, GRAIL_TYPE_SYSFLAG1); ++ goto next_window; ++ } ++ } ++ } ++ } ++ ++next_window: ++ window = window->parent; ++ } ++ ++ /* ++ * Traverse the window hierarchy looking for a window with a client ++ * selecting for one of the recognized gestures. ++ * ++ * All clients of the top most window with a match will receive events if ++ * they have selected for gestures that have been recognized, even if they ++ * have selected for different gestures between them. ++ * ++ * Once any gesture is matched on a window, propagation through the window ++ * hierarchy ends. ++ */ ++ for (window = child_window; window && !found_match; window = window->parent) ++ { ++ /* No client selected for gestures on this window */ ++ if (!wGestureMasks(window)) ++ continue; ++ ++ /* For each recognized gesture */ ++ grail_mask_foreach(type, types, type_bytes) ++ { ++ if (type == GRAIL_TYPE_SYSFLAG1) ++ continue; ++ ++ /* Check if any client selected for this gesture on the window */ ++ if (BitIsOn(wGestureMasks(window)->mask, type)) ++ { ++ GestureClientsPtr client; ++ ++ /* For each client that selected for gestures on this window */ ++ for (client = wGestureMasks(window)->clients; client; ++ client = client->next) ++ { ++ /* ++ * Check if this client selected for this gesture. Request ++ * may be for this device or all devices. ++ */ ++ if (BitIsOn(client->gestureMask[pInfo->dev->id], type) || ++ BitIsOn(client->gestureMask[0], type)) ++ { ++ /* ++ * Find this client in the clients array passed back to ++ * the caller. ++ */ ++ for (j = 0; j < num_clients; j++) ++ if (clients[j].id.client == ++ CLIENT_ID(client->resource)) ++ break; ++ ++ /* Check if the client exists in the array yet */ ++ if (j >= num_clients) ++ { ++ /* We ran out of room in the array, return error */ ++ if (num_clients >= max_clients) ++ return -1; ++ /* Set up new client in array */ ++ clients[j].id.client = CLIENT_ID(client->resource); ++ clients[j].id.root = root_window->drawable.id; ++ clients[j].id.child = child_window->drawable.id; ++ clients[j].id.event = window->drawable.id; ++ num_clients++; ++ } ++ ++ /* Set this gesture bit in the client's gesture mask */ ++ SetBit(clients[j].mask, type); ++ } ++ } ++ ++ /* A match has been found, stop propagating */ ++ found_match = 1; ++ } ++ } ++ } ++ ++ return num_clients; ++} ++ ++static void GrailEvent(struct grail *grail, const struct input_event *ev) ++{ ++ InputInfoPtr pInfo = (InputInfoPtr)grail->priv; ++ SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; ++ struct SynapticsHwState hw; ++ int delay = 0; ++ Bool newDelay = FALSE; ++ ++ if (EventProcessEvent(pInfo, &priv->comm, &hw, ev)) { ++ hw.millis = GetTimeInMillis(); ++ priv->hwState = hw; ++ delay = HandleState(pInfo, &hw); ++ newDelay = TRUE; ++ } ++ ++ if (newDelay) ++ priv->timer = TimerSet(priv->timer, 0, delay, timerFunc, pInfo); ++} ++ ++static void GrailGesture(struct grail *grail, const struct grail_event *ev) ++{ ++ InputInfoPtr pInfo = grail->priv; ++ int x; ++ int y; ++ ++ DeviceIntPtr master = pInfo->dev->u.master; ++ ++ /* If this mouse isn't hooked up to a cursor, don't do anything */ ++ if (!master) ++ return; ++ ++ /* Note: Master device valuators are in screen coordinates */ ++ x = master->last.valuators[0]; ++ y = master->last.valuators[1]; ++ ++ xf86PostGestureEvent(pInfo->dev, x, y, ev->client_id.client, ev->id, ++ ev->type, ev->client_id.root, ev->client_id.event, ++ ev->client_id.child, ev->status, ++ ev->nprop, (float *)ev->prop); ++} ++ ++int ++GrailOpen(InputInfoPtr pInfo) ++{ ++ SynapticsPrivate *priv = pInfo->private; ++ EventcommPrivate *ecpriv = priv->proto_data; ++ ++ ecpriv->grail = malloc(sizeof(struct grail)); ++ if (!ecpriv->grail) { ++ xf86Msg(X_ERROR, "%s: failed to allocate grail structure\n", ++ pInfo->name); ++ return -1; ++ } ++ ++ memset(ecpriv->grail, 0, sizeof(struct grail)); ++ ecpriv->grail->get_clients = GetClients; ++ ecpriv->grail->event = GrailEvent; ++ ecpriv->grail->gesture = GrailGesture; ++ ecpriv->grail->priv = pInfo; ++ ++ if (grail_open(ecpriv->grail, pInfo->fd)) { ++ xf86Msg(X_INFO, "%s: failed to open grail, no gesture support\n", ++ pInfo->name); ++ free(ecpriv->grail); ++ ecpriv->grail = NULL; ++ return -1; ++ } ++ ++ { ++ struct grail_coord min; ++ struct grail_coord max; ++ ++ min.x = screenInfo.screens[0]->x; ++ min.y = screenInfo.screens[0]->y; ++ max.x = min.x + screenInfo.screens[0]->width; ++ max.y = min.y + screenInfo.screens[0]->height; ++ ++ grail_set_bbox(ecpriv->grail, &min, &max); ++ } ++ ++ return 0; ++} ++ ++void ++GrailClose(InputInfoPtr pInfo) ++{ ++ SynapticsPrivate *priv = pInfo->private; ++ EventcommPrivate *ecpriv = priv->proto_data; ++ ++ if (ecpriv->grail) { ++ grail_close(ecpriv->grail, pInfo->fd); ++ free(ecpriv->grail); ++ ecpriv->grail = NULL; ++ } ++} +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c 2011-07-05 11:54:55.781347674 +0300 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2011-07-05 11:55:02.771347676 +0300 +@@ -119,7 +119,6 @@ + static void SynapticsUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags); + static Bool DeviceControl(DeviceIntPtr, int); + static void ReadInput(InputInfoPtr); +-static int HandleState(InputInfoPtr, struct SynapticsHwState*); + static int ControlProc(InputInfoPtr, xDeviceCtl*); + static int SwitchMode(ClientPtr, DeviceIntPtr, int); + static Bool DeviceInit(DeviceIntPtr); +@@ -1219,7 +1218,7 @@ + return inside_area; + } + +-static CARD32 ++CARD32 + timerFunc(OsTimerPtr timer, CARD32 now, pointer arg) + { + InputInfoPtr pInfo = arg; +@@ -2422,7 +2421,7 @@ + * milliseconds to wait before calling the function again if no state change + * occurs. + */ +-static int ++int + HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw) + { + SynapticsPrivate *priv = (SynapticsPrivate *) (pInfo->private); +Index: xserver-xorg-input-synaptics/src/synproto.h +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synproto.h 2011-07-05 11:54:55.781347674 +0300 ++++ xserver-xorg-input-synaptics/src/synproto.h 2011-07-05 11:55:02.771347676 +0300 +@@ -105,4 +105,7 @@ + #endif /* BUILD_PSMCOMM */ + extern struct SynapticsProtocolOperations alps_proto_operations; + ++extern int HandleState(InputInfoPtr, struct SynapticsHwState*); ++extern CARD32 timerFunc(OsTimerPtr timer, CARD32 now, pointer arg); ++ + #endif /* _SYNPROTO_H_ */ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/129_disable_three_touch_tap.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/129_disable_three_touch_tap.patch @@ -0,0 +1,11 @@ +--- a/src/synaptics.c ++++ b/src/synaptics.c +@@ -633,7 +633,7 @@ static void set_default_parameters(Input + /* Enable tap */ + tapButton1 = 1; + tapButton2 = 3; +- tapButton3 = 2; ++ tapButton3 = 0; /* Disabled by default so three-touch gestures work */ + + /* Enable multifinger-click if only have one physical button, + otherwise clickFinger is always button 1. */ --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/131_reset-num_active_touches-on-deviceoff.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/131_reset-num_active_touches-on-deviceoff.patch @@ -0,0 +1,37 @@ +When disabling the device, reset num_active_touches to zero. Otherwise, +num_active_touches stays at the value it was on DeviceOff(). Future touches +add to that value until the index may go past priv->open_slots[]. +That causes spurious memory corruption on touch ends. + +And as of 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e we ignore pre-existing +touches anyway. + +Test-case: +- place num_touches fingers on the touchpad +- xinput disable +- lift fingers +- xinput enable +- place finger on device, num_active_touches is now (num_touches + 1) + +X.Org Bug 52496 + +Signed-off-by: Peter Hutterer + +--- a/src/synaptics.c ++++ b/src/synaptics.c +@@ -1154,6 +1154,7 @@ + priv->lastButtons = 0; + priv->prev_z = 0; + priv->prevFingers = 0; ++ priv->num_active_touches = 0; + #ifdef HAVE_MULTITOUCH + memset(priv->open_slots, 0, priv->num_slots * sizeof(int)); + #endif +@@ -3119,6 +3120,7 @@ + if (hw->slot_state[i] == SLOTSTATE_OPEN) { + priv->open_slots[priv->num_active_touches] = i; + priv->num_active_touches++; ++ BUG_WARN(priv->num_active_touches > priv->num_slots); + } + else if (hw->slot_state[i] == SLOTSTATE_CLOSE) { + Bool found = FALSE; --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/123_order_ProcessTouch_for_numFingers.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/123_order_ProcessTouch_for_numFingers.patch @@ -0,0 +1,20 @@ +Index: xserver-xorg-input-synaptics/src/eventcomm.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/eventcomm.c 2011-07-05 11:55:12.731347678 +0300 ++++ xserver-xorg-input-synaptics/src/eventcomm.c 2011-07-05 11:55:17.051347678 +0300 +@@ -555,6 +555,7 @@ + case EV_SYN: + switch (ev->code) { + case SYN_REPORT: ++ ProcessTouch(pInfo, priv); + if (priv->has_touch && ecpriv->active_touches < 2) + hw->numFingers = ecpriv->active_touches; + else if (comm->oneFinger) +@@ -566,7 +567,6 @@ + else + hw->numFingers = 0; + *hwRet = *hw; +- ProcessTouch(pInfo, priv); + return TRUE; + } + case EV_KEY: --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/126_ubuntu_xi22.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/126_ubuntu_xi22.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -64,7 +64,7 @@ AC_SUBST([sdkdir]) + DRIVER_NAME=synaptics + AC_SUBST([DRIVER_NAME]) + +-PKG_CHECK_MODULES(XI22, [inputproto >= 2.1.99.3] [xorg-server >= 1.11.99.901], HAVE_XI22="yes", HAVE_XI22="no") ++PKG_CHECK_MODULES(XI22, [inputproto >= 2.1.99.3] [xorg-server >= 1.11.3], HAVE_XI22="yes", HAVE_XI22="no") + if test "x$HAVE_XI22" = xyes; then + AC_DEFINE(HAVE_MULTITOUCH, 1, [XI2.2 available]) + fi --- xserver-xorg-input-synaptics-1.6.2.orig/debian/patches/115_evdev_only.patch +++ xserver-xorg-input-synaptics-1.6.2/debian/patches/115_evdev_only.patch @@ -0,0 +1,13 @@ +Prevent non-evdev devices from firing the eventcomm AutoDevProbe callback. + +Index: xserver-xorg-input-synaptics/conf/50-synaptics.conf +=================================================================== +--- xserver-xorg-input-synaptics.orig/conf/50-synaptics.conf 2011-07-05 11:54:33.911347672 +0300 ++++ xserver-xorg-input-synaptics/conf/50-synaptics.conf 2011-07-05 11:54:53.411347674 +0300 +@@ -14,5 +14,5 @@ + # This option is recommend on all Linux systems using evdev, but cannot be + # enabled by default. See the following link for details: + # http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html +-# MatchDevicePath "/dev/input/event*" ++ MatchDevicePath "/dev/input/event*" + EndSection --- xserver-xorg-input-synaptics-1.6.2.orig/debian/local/51-synaptics-quirks.conf +++ xserver-xorg-input-synaptics-1.6.2/debian/local/51-synaptics-quirks.conf @@ -0,0 +1,23 @@ +Section "InputClass" + Identifier "Dell Inspiron embedded buttons quirks" + MatchTag "inspiron_1011|inspiron_1012" + MatchDevicePath "/dev/input/event*" + Driver "synaptics" + Option "JumpyCursorThreshold" "90" +EndSection + +Section "InputClass" + Identifier "Dell Inspiron quirks" + MatchTag "inspiron_1120" + MatchDevicePath "/dev/input/event*" + Driver "synaptics" + Option "JumpyCursorThreshold" "250" +EndSection + +Section "InputClass" + Identifier "HP Mininote quirks" + MatchTag "mininote_1000" + MatchDevicePath "/dev/input/event*" + Driver "synaptics" + Option "JumpyCursorThreshold" "20" +EndSection --- xserver-xorg-input-synaptics-1.6.2.orig/debian/local/66-xorg-synaptics-quirks.rules +++ xserver-xorg-input-synaptics-1.6.2/debian/local/66-xorg-synaptics-quirks.rules @@ -0,0 +1,13 @@ +ACTION!="add|change", GOTO="xorg_synaptics_quirks_end" +KERNEL!="event*", GOTO="xorg_synaptics_quirks_end" + +ENV{ID_INPUT_TOUCHPAD}!="1", GOTO="xorg_synaptics_quirks_end" + +# Placeholder for platform specific quirks needing +# ID_INPUT.tags to be set. +ATTR{[dmi/id]product_name}=="Inspiron 1011", ENV{ID_INPUT.tags}="inspiron_1011" +ATTR{[dmi/id]product_name}=="Inspiron 1012", ENV{ID_INPUT.tags}="inspiron_1012" +ATTR{[dmi/id]product_name}=="Inspiron 1120", ENV{ID_INPUT.tags}="inspiron_1120" +ATTR{[dmi/id]product_name}=="HP MiniNote 1000", ENV{ID_INPUT.tags}="mininote_1000" + +LABEL="xorg_synaptics_quirks_end"