--- xfree86-driver-synaptics-0.99.3.orig/autogen.sh +++ xfree86-driver-synaptics-0.99.3/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 "$@" --- xfree86-driver-synaptics-0.99.3.orig/docs/trouble-shooting.txt +++ xfree86-driver-synaptics-0.99.3/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. --- xfree86-driver-synaptics-0.99.3.orig/docs/README.alps +++ xfree86-driver-synaptics-0.99.3/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) { --- xfree86-driver-synaptics-0.99.3.orig/docs/tapndrag.dia +++ xfree86-driver-synaptics-0.99.3/docs/tapndrag.dia @@ -0,0 +1,1763 @@ + + + + + + + + + + + + + #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# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T +[D]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R +[D] if F# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #R +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO or M# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO or M# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #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]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO2 +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #T +[U]# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #TO5# + + + + + + + + + + + + + + + + + + + + + + + + --- xfree86-driver-synaptics-0.99.3.orig/debian/xserver-xorg-input-synaptics.README.Debian +++ xfree86-driver-synaptics-0.99.3/debian/xserver-xorg-input-synaptics.README.Debian @@ -0,0 +1,101 @@ +xfree86-driver-synaptics for Debian +----------------------------------- + +This package contains the Synaptics TouchPad driver for X.Org and XFree86 X +server. +See also the README file for details on configuration options. +The following notes are reported from the INSTALL instructions of upstream +package (by Stefan Gmeiner ), but first of all a +security notice about SHMConfig: + + If you want to be able to change driver parameters without + restarting the X server, enable the "SHMConfig" option in the X + configuration file. You can then use the "synclient" program to + query and modify driver parameters on the fly. + SECURITY NOTE! This is not secure if you are in an untrusted + multiuser environment. All local users can change the parameters at any + time. + +Configuration +------------- + +1. Load the driver by changing the X.Org/XFree86 configuration file +(/etc/X11/xorg.conf or /etc/X11/XF86Config-4) 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 "Mouse[1]" + Option "Device" "/dev/psaux" + Option "Protocol" "auto-dev" +# +# Following lines are optional thus commented in this example. +# Please read the synaptics(5) 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 "SHMConfig" "on" +# 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 "Mouse[1]" "CorePointer" +... + + 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 XFree 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 , Tue, 2 Mar 2004 11:42:05 +0100 --- xfree86-driver-synaptics-0.99.3.orig/debian/xserver-xorg-input-synaptics.install +++ xfree86-driver-synaptics-0.99.3/debian/xserver-xorg-input-synaptics.install @@ -0,0 +1,3 @@ +usr/lib/xorg/modules/input/*.so +usr/bin/* +usr/share/hal/fdi/policy/20thirdparty/* --- xfree86-driver-synaptics-0.99.3.orig/debian/control +++ xfree86-driver-synaptics-0.99.3/debian/control @@ -0,0 +1,44 @@ +Source: xfree86-driver-synaptics +Section: x11 +Priority: optional +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: Mattia Dongili +Build-Depends: debhelper (>= 4.0.0), libx11-dev, libxext-dev, libxi-dev, x11proto-core-dev, xserver-xorg-dev (>= 2:1.5.99.901), pkg-config, quilt, automake, libtool, xutils-dev +Standards-Version: 3.7.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 +Homepage: http://web.telia.com/~u89404340/touchpad/index.html + +Package: xserver-xorg-input-synaptics +Architecture: alpha amd64 arm armeb armel hppa i386 ia64 lpia m68k mips mipsel powerpc sparc +Depends: ${shlibs:Depends}, ${xserver:Depends}, libxi6 +Conflicts: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics +Replaces: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics +Provides: ${xinpdriver:Provides}, xfree86-driver-synaptics, xorg-driver-synaptics +Suggests: gsynaptics | ksynaptics | qsynaptics +Description: Synaptics TouchPad driver for X.Org/XFree86 server + This package provides an input driver for the X.Org/XFree86 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)). + . --- xfree86-driver-synaptics-0.99.3.orig/debian/xserver-xorg-input-synaptics.docs +++ xfree86-driver-synaptics-0.99.3/debian/xserver-xorg-input-synaptics.docs @@ -0,0 +1,5 @@ +README +docs/README.alps +TODO +NEWS +docs/trouble-shooting.txt --- xfree86-driver-synaptics-0.99.3.orig/debian/compat +++ xfree86-driver-synaptics-0.99.3/debian/compat @@ -0,0 +1 @@ +4 --- xfree86-driver-synaptics-0.99.3.orig/debian/xserver-xorg-input-synaptics.manpages +++ xfree86-driver-synaptics-0.99.3/debian/xserver-xorg-input-synaptics.manpages @@ -0,0 +1,2 @@ +debian/tmp/usr/share/man/man1/* +debian/tmp/usr/share/man/man4/* --- xfree86-driver-synaptics-0.99.3.orig/debian/copyright +++ xfree86-driver-synaptics-0.99.3/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'. + --- xfree86-driver-synaptics-0.99.3.orig/debian/changelog +++ xfree86-driver-synaptics-0.99.3/debian/changelog @@ -0,0 +1,650 @@ +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-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 + --- xfree86-driver-synaptics-0.99.3.orig/debian/xfree86-driver-synaptics.README.Debian +++ xfree86-driver-synaptics-0.99.3/debian/xfree86-driver-synaptics.README.Debian @@ -0,0 +1,7 @@ +xfree86-driver-synaptics for Debian +----------------------------------- + +This package is superseeded by xserver-xorg-driver-synaptics and +can be safely removed. + + -- Mattia Dongili , Sun, 05 Mar 2006 21:19:06 +0100 --- xfree86-driver-synaptics-0.99.3.orig/debian/watch +++ xfree86-driver-synaptics-0.99.3/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://xorg.freedesktop.org/releases/individual/driver/ xf86-input-synaptics-(.*)\.tar\.gz --- xfree86-driver-synaptics-0.99.3.orig/debian/rules +++ xfree86-driver-synaptics-0.99.3/debian/rules @@ -0,0 +1,107 @@ +#!/usr/bin/make -f +# debian/rules for the Debian xserver-xorg-input-synaptics package. +# Copyright © 2008 Mattia Dongili +# +# Based on debian/rules for the Debian xserver-xorg-input-evdev package. +# Copyright © 2004 Scott James Remnant +# Copyright © 2005 Daniel Stone +# Copyright © 2005 David Nusinow + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +PACKAGE=xserver-xorg-input-synaptics + +include debian/xsfbs/xsfbs.mk + +CFLAGS = -Wall -g +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +#confflags += --disable-static + +configure: $(STAMP_DIR)/patch + autoreconf -vfi + +obj-$(DEB_BUILD_GNU_TYPE)/config.status: configure + mkdir -p obj-$(DEB_BUILD_GNU_TYPE) + cd obj-$(DEB_BUILD_GNU_TYPE) && \ + ../configure --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info $(confflags) \ + CFLAGS="$(CFLAGS)" + + +build: build-stamp +build-stamp: obj-$(DEB_BUILD_GNU_TYPE)/config.status + dh_testdir + cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE) + >$@ + +clean: xsfclean + dh_testdir + dh_testroot + rm -f build-stamp + + rm -f config.cache config.log config.status + rm -f */config.cache */config.log */config.status + rm -f conftest* */conftest* + rm -rf autom4te.cache */autom4te.cache + rm -rf obj-* + rm -f $$(find -name Makefile.in) + rm -f compile config.guess config.sub configure depcomp install-sh + rm -f ltmain.sh missing aclocal.m4 config.h.in + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + cd obj-$(DEB_BUILD_GNU_TYPE) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + install -d $(CURDIR)/debian/tmp/usr/share/hal/fdi/policy/20thirdparty + install -m 0644 fdi/11-x11-synaptics.fdi \ + $(CURDIR)/debian/tmp/usr/share/hal/fdi/policy/20thirdparty + +# Build architecture-dependent files here. +binary-arch: build install serverabi + dh_testdir + dh_testroot + + dh_installdocs + dh_installchangelogs ChangeLog + dh_install --sourcedir=debian/tmp --list-missing --exclude=synaptics_drv.la --exclude=usr/share/man + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps -- --warnings=6 + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-independent files here. +binary-indep: build install +# Nothing to do + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install --- xfree86-driver-synaptics-0.99.3.orig/debian/xsfbs/xsfbs.sh +++ xfree86-driver-synaptics-0.99.3/debian/xsfbs/xsfbs.sh @@ -0,0 +1,931 @@ +# $Id$ + +# This is the X Strike Force shell library for X Window System package +# maintainer scripts. It serves to define shell functions commonly used by +# such packages, and performs some error checking necessary for proper operation +# of those functions. By itself, it does not "do" much; the maintainer scripts +# invoke the functions defined here to accomplish package installation and +# removal tasks. + +# If you are reading this within a Debian package maintainer script (e.g., +# /var/lib/dpkg)info/PACKAGE.{config,preinst,postinst,prerm,postrm}), you can +# skip past this library by scanning forward in this file to the string +# "GOBSTOPPER". + +SOURCE_VERSION=@SOURCE_VERSION@ +OFFICIAL_BUILD=@OFFICIAL_BUILD@ + +# Use special abnormal exit codes so that problems with this library are more +# easily tracked down. +SHELL_LIB_INTERNAL_ERROR=86 +SHELL_LIB_THROWN_ERROR=74 +SHELL_LIB_USAGE_ERROR=99 + +# old -> new variable names +if [ -z "$DEBUG_XORG_PACKAGE" ] && [ -n "$DEBUG_XFREE86_PACKAGE" ]; then + DEBUG_XORG_PACKAGE="$DEBUG_XFREE86_PACKAGE" +fi +if [ -z "$DEBUG_XORG_DEBCONF" ] && [ -n "$DEBUG_XFREE86_DEBCONF" ]; then + DEBUG_XORG_DEBCONF="$DEBUG_XFREE86_DEBCONF" +fi + +# initial sanity checks +if [ -z "$THIS_PACKAGE" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of this package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +if [ -z "$THIS_SCRIPT" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of the +"$THIS_PACKAGE" package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +ARCHITECTURE="$(dpkg --print-installation-architecture)" + +if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then + RECONFIGURE="true" +else + RECONFIGURE= +fi + +if ([ "$1" = "install" ] || [ "$1" = "configure" ]) && [ -z "$2" ]; then + FIRSTINST="yes" +fi + +if [ -z "$RECONFIGURE" ] && [ -z "$FIRSTINST" ]; then + UPGRADE="yes" +fi + +trap "message;\ + message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\ + message;\ + exit 1" HUP INT QUIT TERM + +reject_nondigits () { + # syntax: reject_nondigits [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters other than decimal digits and barf if any are found + while [ -n "$1" ]; do + # does the operand contain anything but digits? + if ! expr "$1" : "[[:digit:]]\+$" > /dev/null 2>&1; then + # can't use die(), because it wraps message() which wraps this function + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_nondigits() encountered" \ + "possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +reject_whitespace () { + # syntax: reject_whitespace [ operand ] + # + # scan operand (typically a shell variable whose value cannot be trusted) for + # whitespace characters and barf if any are found + if [ -n "$1" ]; then + # does the operand contain any whitespace? + if expr "$1" : "[[:space:]]" > /dev/null 2>&1; then + # can't use die(), because I want to avoid forward references + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_whitespace() encountered" \ + "possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + fi +} + +reject_unlikely_path_chars () { + # syntax: reject_unlikely_path_chars [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters unlikely to be seen in a path and which the shell might + # interpret and barf if any are found + while [ -n "$1" ]; do + # does the operand contain any funny characters? + if expr "$1" : '.*[!$&()*;<>?|].*' > /dev/null 2>&1; then + # can't use die(), because I want to avoid forward references + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_unlikely_path_chars()" \ + "encountered possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the +# event the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while +# the script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2> /dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" > /dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +message () { + # pretty-print messages of arbitrary length + reject_nondigits "$COLUMNS" + echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} >&2 +} + +observe () { + # syntax: observe message ... + # + # issue observational message suitable for logging someday when support for + # it exists in dpkg + if [ -n "$DEBUG_XORG_PACKAGE" ]; then + message "$THIS_PACKAGE $THIS_SCRIPT note: $*" + fi +} + +warn () { + # syntax: warn message ... + # + # issue warning message suitable for logging someday when support for + # it exists in dpkg; also send to standard error + message "$THIS_PACKAGE $THIS_SCRIPT warning: $*" +} + +die () { + # syntax: die message ... + # + # exit script with error message + message "$THIS_PACKAGE $THIS_SCRIPT error: $*" + exit $SHELL_LIB_THROWN_ERROR +} + +internal_error () { + # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message + message "internal error: $*" + if [ -n "$OFFICIAL_BUILD" ]; then + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + fi + exit $SHELL_LIB_INTERNAL_ERROR +} + +usage_error () { + message "usage error: $*" + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + exit $SHELL_LIB_USAGE_ERROR +} + + +maplink () { + # returns what symlink should point to; i.e., what the "sane" answer is + # Keep this in sync with the debian/*.links files. + # This is only needed for symlinks to directories. + # + # XXX: Most of these look wrong in the X11R7 world and need to be fixed. + # If we've stopped using this function, fixing it might enable us to re-enable + # it again and catch more errors. + case "$1" in + /etc/X11/xkb/compiled) echo /var/lib/xkb ;; + /etc/X11/xkb/xkbcomp) echo /usr/X11R6/bin/xkbcomp ;; + /usr/X11R6/lib/X11/app-defaults) echo /etc/X11/app-defaults ;; + /usr/X11R6/lib/X11/fs) echo /etc/X11/fs ;; + /usr/X11R6/lib/X11/lbxproxy) echo /etc/X11/lbxproxy ;; + /usr/X11R6/lib/X11/proxymngr) echo /etc/X11/proxymngr ;; + /usr/X11R6/lib/X11/rstart) echo /etc/X11/rstart ;; + /usr/X11R6/lib/X11/twm) echo /etc/X11/twm ;; + /usr/X11R6/lib/X11/xdm) echo /etc/X11/xdm ;; + /usr/X11R6/lib/X11/xinit) echo /etc/X11/xinit ;; + /usr/X11R6/lib/X11/xkb) echo /etc/X11/xkb ;; + /usr/X11R6/lib/X11/xserver) echo /etc/X11/xserver ;; + /usr/X11R6/lib/X11/xsm) echo /etc/X11/xsm ;; + /usr/bin/X11) echo ../X11R6/bin ;; + /usr/bin/rstartd) echo ../X11R6/bin/rstartd ;; + /usr/include/X11) echo ../X11R6/include/X11 ;; + /usr/lib/X11) echo ../X11R6/lib/X11 ;; + *) internal_error "maplink() called with unknown path \"$1\"" ;; + esac +} + +analyze_path () { + # given a supplied set of pathnames, break each one up by directory and do an + # ls -dl on each component, cumulatively; i.e. + # analyze_path /usr/X11R6/bin -> ls -dl /usr /usr/X11R6 /usr/X11R6/bin + # Thanks to Randolph Chung for this clever hack. + + local f g + + while [ -n "$1" ]; do + reject_whitespace "$1" + g= + message "Analyzing $1:" + for f in $(echo "$1" | tr / \ ); do + if [ -e /$g$f ]; then + ls -dl /$g$f /$g$f.dpkg-* 2> /dev/null || true + g=$g$f/ + else + message "/$g$f: nonexistent; directory contents of /$g:" + ls -l /$g + break + fi + done + shift + done +} + +find_culprits () { + local f p dpkg_info_dir possible_culprits smoking_guns bad_packages package \ + msg + + reject_whitespace "$1" + message "Searching for overlapping packages..." + dpkg_info_dir=/var/lib/dpkg/info + if [ -d $dpkg_info_dir ]; then + if [ "$(echo $dpkg_info_dir/*.list)" != "$dpkg_info_dir/*.list" ]; then + possible_culprits=$(ls -1 $dpkg_info_dir/*.list | egrep -v \ + "(xbase-clients|x11-common|xfs|xlibs)") + if [ -n "$possible_culprits" ]; then + smoking_guns=$(grep -l "$1" $possible_culprits || true) + if [ -n "$smoking_guns" ]; then + bad_packages=$(printf "\\n") + for f in $smoking_guns; do + # too bad you can't nest parameter expansion voodoo + p=${f%*.list} # strip off the trailing ".list" + package=${p##*/} # strip off the directories + bad_packages=$(printf "%s\n%s" "$bad_packages" "$package") + done + msg=$(cat < /dev/null 2>&1; then + message "The readlink command was not found. Please install version" \ + "1.13.1 or later of the debianutils package." + readlink () { + # returns what symlink in $1 actually points to + perl -e '$l = shift; exit 1 unless -l $l; $r = readlink $l; exit 1 unless $r; print "$r\n"' "$1" + } +fi + +check_symlink () { + # syntax: check_symlink symlink + # + # See if specified symlink points where it is supposed to. Return 0 if it + # does, and 1 if it does not. + # + # Primarily used by check_symlinks_and_warn() and check_symlinks_and_bomb(). + + local symlink + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "check_symlink() called with wrong number of arguments;" \ + "expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + symlink="$1" + + if [ "$(maplink "$symlink")" = "$(readlink "$symlink")" ]; then + return 0 + else + return 1 + fi +} + +check_symlinks_and_warn () { + # syntax: check_symlinks_and_warn symlink ... + # + # For each argument, check for symlink sanity, and warn if it isn't sane. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install". + + local errmsg symlink + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "check_symlinks_and_warn() called with wrong number of" \ + "arguments; expected at least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + while [ -n "$1" ]; do + symlink="$1" + if [ -L "$symlink" ]; then + if ! check_symlink "$symlink"; then + observe "$symlink symbolic link points to wrong location" \ + "$(readlink "$symlink"); removing" + rm "$symlink" + fi + elif [ -e "$symlink" ]; then + errmsg="$symlink exists and is not a symbolic link; this package cannot" + errmsg="$errmsg be installed until this" + if [ -f "$symlink" ]; then + errmsg="$errmsg file" + elif [ -d "$symlink" ]; then + errmsg="$errmsg directory" + else + errmsg="$errmsg thing" + fi + errmsg="$errmsg is removed" + die "$errmsg" + fi + shift + done +} + +check_symlinks_and_bomb () { + # syntax: check_symlinks_and_bomb symlink ... + # + # For each argument, check for symlink sanity, and bomb if it isn't sane. + # + # Call this function from a postinst script. + + local problem symlink + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "check_symlinks_and_bomb() called with wrong number of" + "arguments; expected at least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + while [ -n "$1" ]; do + problem= + symlink="$1" + if [ -L "$symlink" ]; then + if ! check_symlink "$symlink"; then + problem=yes + warn "$symlink symbolic link points to wrong location" \ + "$(readlink "$symlink")" + fi + elif [ -e "$symlink" ]; then + problem=yes + warn "$symlink is not a symbolic link" + else + problem=yes + warn "$symlink symbolic link does not exist" + fi + if [ -n "$problem" ]; then + analyze_path "$symlink" "$(readlink "$symlink")" + find_culprits "$symlink" + die "bad symbolic links on system" + fi + shift + done +} + +font_update () { + # run $UPDATECMDS in $FONTDIRS + + local dir cmd shortcmd x_font_dir_prefix + + x_font_dir_prefix="/usr/share/fonts/X11" + + if [ -z "$UPDATECMDS" ]; then + usage_error "font_update() called but \$UPDATECMDS not set" + fi + if [ -z "$FONTDIRS" ]; then + usage_error "font_update() called but \$FONTDIRS not set" + fi + + reject_unlikely_path_chars "$UPDATECMDS" + reject_unlikely_path_chars "$FONTDIRS" + + for dir in $FONTDIRS; do + if [ -d "$x_font_dir_prefix/$dir" ]; then + for cmd in $UPDATECMDS; do + if which "$cmd" > /dev/null 2>&1; then + shortcmd=${cmd##*/} + observe "running $shortcmd in $dir font directory" + cmd_opts= + if [ "$shortcmd" = "update-fonts-alias" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-dir" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-scale" ]; then + cmd_opts=--x11r7-layout + fi + $cmd $cmd_opts $dir || warn "$cmd $cmd_opts $dir" \ + "failed; font directory data may not" \ + "be up to date" + else + warn "$cmd not found; not updating corresponding $dir font" \ + "directory data" + fi + done + else + warn "$dir is not a directory; not updating font directory data" + fi + done +} + +remove_conffile_prepare () { + # syntax: remove_conffile_prepare filename official_md5sum ... + # + # Check a conffile "filename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 2 ]; then + usage_error "remove_conffile_prepare() called with wrong number of" \ + "arguments; expected at least 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + shift + + # does the conffile even exist? + if [ -e "$conffile" ]; then + # calculate its checksum + current_checksum=$(md5sum < "$conffile" | sed 's/[[:space:]].*//') + # compare it to each supplied checksum + while [ -n "$1" ]; do + if [ "$current_checksum" = "$1" ]; then + # we found a match; move the confffile and stop looking + observe "preparing obsolete conffile $conffile for removal" + mv "$conffile" "$conffile.$THIS_PACKAGE-tmp" + break + fi + shift + done + fi +} + +remove_conffile_lookup () { + # syntax: remove_conffile_lookup package filename + # + # Lookup the md5sum of a conffile in dpkg's database, and prepare for removal + # if it matches the actual file's md5sum. + # + # Call this function when you would call remove_conffile_prepare but only + # want to check against dpkg's status database instead of known checksums. + + local package conffile old_md5sum + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "remove_conffile_lookup() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + package="$1" + conffile="$2" + + if ! [ -e "$conffile" ]; then + return + fi + old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$package" | \ + awk '{ if (match($0, "^ '"$conffile"' ")) print $2}')" + if [ -n "$old_md5sum" ]; then + remove_conffile_prepare "$conffile" "$old_md5sum" + fi +} + +remove_conffile_commit () { + # syntax: remove_conffile_commit filename + # + # Complete the removal of a conffile "filename" that has become obsolete. + # + # Call this function from a postinst script after having used + # remove_conffile_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_commit() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, remove it + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "committing removal of obsolete conffile $conffile" + rm "$conffile.$THIS_PACKAGE-tmp" + fi +} + +remove_conffile_rollback () { + # syntax: remove_conffile_rollback filename + # + # Roll back the removal of a conffile "filename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" is after having used remove_conffile_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_rollback() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, move it + # back + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "rolling back removal of obsolete conffile $conffile" + mv "$conffile.$THIS_PACKAGE-tmp" "$conffile" + fi +} + +replace_conffile_with_symlink_prepare () { + # syntax: replace_conffile_with_symlink_prepare oldfilename newfilename \ + # official_md5sum ... + # + # Check a conffile "oldfilename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. Otherwise copy it + # to newfilename and let dpkg handle it through conffiles mechanism. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 3 ]; then + usage_error "replace_conffile_with_symlink_prepare() called with wrong" \ + " number of arguments; expected at least 3, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + shift + newconffile="$1" + shift + + remove_conffile_prepare "$_oldconffile" "$@" + # If $oldconffile still exists, then md5sums didn't match. + # Copy it to new one. + if [ -f "$oldconffile" ]; then + cp "$oldconffile" "$newconffile" + fi + +} + +replace_conffile_with_symlink_commit () { + # syntax: replace_conffile_with_symlink_commit oldfilename + # + # Complete the removal of a conffile "oldfilename" that has been + # replaced by a symlink. + # + # Call this function from a postinst script after having used + # replace_conffile_with_symlink_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "replace_conffile_with_symlink_commit() called with wrong" \ + "number of arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + remove_conffile_commit "$conffile" +} + +replace_conffile_with_symlink_rollback () { + # syntax: replace_conffile_with_symlink_rollback oldfilename newfilename + # + # Roll back the replacing of a conffile "oldfilename" with symlink to + # "newfilename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" and verify $2 to ensure the package failed to upgrade + # from a version (or install over a version removed-but-not-purged) prior + # to the one in which the conffile was obsoleted. + # You should have used replace_conffile_with_symlink_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "replace_conffile_with_symlink_rollback() called with wrong" \ + "number of arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + newconffile="$2" + + remove_conffile_rollback "$_oldconffile" + if [ -f "$newconffile" ]; then + rm "$newconffile" + fi +} + +run () { + # syntax: run command [ argument ... ] + # + # Run specified command with optional arguments and report its exit status. + # Useful for commands whose exit status may be nonzero, but still acceptable, + # or commands whose failure is not fatal to us. + # + # NOTE: Do *not* use this function with db_get or db_metaget commands; in + # those cases the return value of the debconf command *must* be checked + # before the string returned by debconf is used for anything. + + local retval + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "run() called with wrong number of arguments; expected at" \ + "least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + "$@" || retval=$? + + if [ ${retval:-0} -ne 0 ]; then + observe "command \"$*\" exited with status $retval" + fi +} + +register_x_lib_dir_with_ld_so () { + # syntax: register_x_lib_dir_with_ld_so + # + # Configure the dynamic loader ld.so to search /usr/X11R6/lib for shared + # libraries. + # + # Call this function from the postinst script of a package that places a + # shared library in /usr/X11R6/lib, before invoking ldconfig. + + local dir ldsoconf + + dir="/usr/X11R6/lib" + ldsoconf="/etc/ld.so.conf" + + # is the line not already present? + if ! fgrep -qsx "$dir" "$ldsoconf"; then + observe "adding $dir directory to $ldsoconf" + echo "$dir" >> "$ldsoconf" + fi +} + +deregister_x_lib_dir_with_ld_so () { + # syntax: deregister_x_lib_dir_with_ld_so + # + # Configure dynamic loader ld.so to not search /usr/X11R6/lib for shared + # libraries, if and only if no shared libaries remain there. + # + # Call this function from the postrm script of a package that places a shared + # library in /usr/X11R6/lib, in the event "$1" is "remove", and before + # invoking ldconfig. + + local dir ldsoconf fgrep_status cmp_status + + dir="/usr/X11R6/lib" + ldsoconf="/etc/ld.so.conf" + + # is the line present? + if fgrep -qsx "$dir" "$ldsoconf"; then + # are there any shared objects in the directory? + if [ "$(echo "$dir"/lib*.so.*.*)" = "$dir/lib*.so.*.*" ]; then + # glob expansion produced nothing, so no shared libraries are present + observe "removing $dir directory from $ldsoconf" + # rewrite the file (very carefully) + set +e + fgrep -svx "$dir" "$ldsoconf" > "$ldsoconf.dpkg-tmp" + fgrep_status=$? + set -e + case $fgrep_status in + 0|1) ;; # we don't actually care if any lines matched or not + *) die "error reading \"$ldsoconf\"; fgrep exited with status" \ + "$fgrep_status" ;; + esac + set +e + cmp -s "$ldsoconf.dpkg-tmp" "$ldsoconf" + cmp_status=$? + set -e + case $cmp_status in + 0) rm "$ldsoconf.dpkg-tmp" ;; # files are identical + 1) mv "$ldsoconf.dpkg-tmp" "$ldsoconf" ;; # files differ + *) die "error comparing \"$ldsoconf.dpkg-tmp\" to \"$ldsoconf\";" \ + "cmp exited with status $cmp_status" ;; + esac + fi + fi +} + +make_symlink_sane () { + # syntax: make_symlink_sane symlink target + # + # Ensure that the symbolic link symlink exists, and points to target. + # + # If symlink does not exist, create it and point it at target. + # + # If symlink exists but is not a symbolic link, back it up. + # + # If symlink exists, is a symbolic link, but points to the wrong location, fix + # it. + # + # If symlink exists, is a symbolic link, and already points to target, do + # nothing. + # + # This function wouldn't be needed if ln had an -I, --idempotent option. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "make_symlink_sane() called with wrong number of arguments;" \ + "expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local symlink target + + symlink="$1" + target="$2" + + if [ -L "$symlink" ] && [ "$(readlink "$symlink")" = "$target" ]; then + observe "link from $symlink to $target already exists" + else + observe "creating symbolic link from $symlink to $target" + mkdir -p "${target%/*}" "${symlink%/*}" + ln -s -b -S ".dpkg-old" "$target" "$symlink" + fi +} + +migrate_dir_to_symlink () { + # syntax: migrate_dir_to_symlink old_location new_location + # + # Per Debian Policy section 6.5.4, "A directory will never be replaced by a + # symbolic link to a directory or vice versa; instead, the existing state + # (symlink or not) will be left alone and dpkg will follow the symlink if + # there is one." + # + # We have to do it ourselves. + # + # This function moves the contents of old_location, a directory, into + # new_location, a directory, then makes old_location a symbolic link to + # new_location. + # + # old_location need not exist, but if it does, it must be a directory (or a + # symlink to a directory). If it is not, it is backed up. If new_location + # exists already and is not a directory, it is backed up. + # + # This function should be called from a package's preinst so that other + # packages unpacked after this one --- but before this package's postinst runs + # --- are unpacked into new_location even if their payloads contain + # old_location filespecs. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "migrate_dir_to_symlink() called with wrong number of" + "arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local new old + + old="$1" + new="$2" + + # Is old location a symlink? + if [ -L "$old" ]; then + # Does it already point to new location? + if [ "$(readlink "$old")" = "$new" ]; then + # Nothing to do; migration has already been done. + observe "migration of $old to $new already done" + return 0 + else + # Back it up. + warn "backing up symbolic link $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + fi + + # Does old location exist, but is not a directory? + if [ -e "$old" ] && ! [ -d "$old" ]; then + # Back it up. + warn "backing up non-directory $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + + observe "migrating $old to $new" + + # Is new location a symlink? + if [ -L "$new" ]; then + # Does it point the wrong way, i.e., back to where we're migrating from? + if [ "$(readlink "$new")" = "$old" ]; then + # Get rid of it. + observe "removing symbolic link $new which points to $old" + rm "$new" + else + # Back it up. + warn "backing up symbolic link $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + fi + + # Does new location exist, but is not a directory? + if [ -e "$new" ] && ! [ -d "$new" ]; then + warn "backing up non-directory $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + + # Create new directory if it does not yet exist. + if ! [ -e "$new" ]; then + observe "creating $new" + mkdir -p "$new" + fi + + # Copy files in old location to new location. Back up any filenames that + # already exist in the new location with the extension ".dpkg-old". + observe "copying files from $old to $new" + if ! (cd "$old" && cp -a -b -S ".dpkg-old" . "$new"); then + die "error(s) encountered while copying files from $old to $new" + fi + + # Remove files at old location. + observe "removing $old" + rm -r "$old" + + # Create symlink from old location to new location. + make_symlink_sane "$old" "$new" +} + +# vim:set ai et sw=2 ts=2 tw=80: + +# GOBSTOPPER: The X Strike Force shell library ends here. --- xfree86-driver-synaptics-0.99.3.orig/debian/xsfbs/xsfbs.mk +++ xfree86-driver-synaptics-0.99.3/debian/xsfbs/xsfbs.mk @@ -0,0 +1,293 @@ +#!/usr/bin/make -f + +# Debian X Strike Force Build System (XSFBS): Make portion + +# Copyright 1996 Stephen Early +# Copyright 1997 Mark Eichin +# Copyright 1998-2005, 2007 Branden Robinson +# Copyright 2005 David Nusinow +# +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . + +# Originally by Stephen Early +# Modified by Mark W. Eichin +# Modified by Adam Heath +# Modified by Branden Robinson +# Modified by Fabio Massimo Di Nitto +# Modified by David Nusinow +# Acknowledgements to Manoj Srivastava. + +# Pass $(DH_OPTIONS) into the environment for debhelper's benefit. +export DH_OPTIONS + +# force quilt to not use ~/.quiltrc and to use debian/patches +QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null + +# Set up parameters for the upstream build environment. + +# Determine (source) package name from Debian changelog. +SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Source:' | awk '{print $$2}') + +# Determine package version from Debian changelog. +SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Version:' | awk '{print $$2}') + +# Determine upstream version number. +UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//') + +# Determine the source version without the epoch for make-orig-tar-gz +NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://') + +# Figure out who's building this package. +BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}}) + +# Find out if this is an official build; an official build has nothing but +# digits, dots, and/or the codename of a release in the Debian part of the +# version number. Anything else indicates an unofficial build. +OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi) + +# Set up parameters for the Debian build environment. + +# Determine our architecture. +BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH) +# Work around some old-time dpkg braindamage. +BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH)) +# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy. +ifdef DEB_HOST_ARCH + ARCH:=$(DEB_HOST_ARCH) +else + # dpkg-cross sets the ARCH environment variable; if set, use it. + ifdef ARCH + ARCH:=$(ARCH) + else + ARCH:=$(BUILD_ARCH) + endif +endif + +# $(STAMP_DIR) houses stamp files for complex targets. +STAMP_DIR:=stampdir + +# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place +# their files. +DEBTREEDIR:=$(CURDIR)/debian/tmp + +# All "important" targets have four lines: +# 1) A target name that is invoked by a package-building tool or the user. +# This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart. +# 2) A line delcaring 1) as a phony target (".PHONY:"). +# 3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may +# depend on other targets. +# 4) A line declaring 3) as a member of the $(stampdir_targets) variable; the +# "$(STAMP_DIR)/" prefix is omitted. +# +# This indirection is needed so that the "stamp" files that signify when a rule +# is done can be located in a separate "stampdir". Recall that make has no way +# to know when a goal has been met for a phony target (like "build" or +# "install"). +# +# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@" +# so that the target will not be run again. Removing the file will make Make +# run the target over. + +# All phony targets should be declared as dependencies of .PHONY, even if they +# do not have "($STAMP_DIR)/"-prefixed counterparts. + +# Define a harmless default rule to keep things from going nuts by accident. +.PHONY: default +default: + +# Set up the $(STAMP_DIR) directory. +.PHONY: stampdir +stampdir_targets+=stampdir +stampdir: $(STAMP_DIR)/stampdir +$(STAMP_DIR)/stampdir: + mkdir $(STAMP_DIR) + >$@ + +# Set up the package build directory as quilt expects to find it. +.PHONY: prepare +stampdir_targets+=prepare +prepare: $(STAMP_DIR)/prepare +$(STAMP_DIR)/prepare: $(STAMP_DIR)/log $(STAMP_DIR)/genscripts + >$@ + +.PHONY: log +stampdir_targets+=log +log: $(STAMP_DIR)/log +$(STAMP_DIR)/log: $(STAMP_DIR)/stampdir + mkdir -p $(STAMP_DIR)/log + +# Apply all patches to the upstream source. +.PHONY: patch +stampdir_targets+=patch +patch: $(STAMP_DIR)/patch +$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare + if ! [ `which quilt` ]; then \ + echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \ + exit 1; \ + fi; \ + if $(QUILT) next >/dev/null 2>&1; then \ + echo -n "Applying patches..."; \ + if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \ + cat $(STAMP_DIR)/log/patch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/patch; \ + echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "No patches to apply"; \ + fi; \ + >$@ + +# Revert all patches to the upstream source. +.PHONY: unpatch +unpatch: $(STAMP_DIR)/log + rm -f $(STAMP_DIR)/patch + @echo -n "Unapplying patches..."; \ + if $(QUILT) applied >/dev/null 2>/dev/null; then \ + if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "nothing to do."; \ + fi + +# Clean the generated maintainer scripts. +.PHONY: cleanscripts +cleanscripts: + rm -f $(STAMP_DIR)/genscripts + rm -f debian/*.config \ + debian/*.postinst \ + debian/*.postrm \ + debian/*.preinst \ + debian/*.prerm + +# Clean the package build tree. +.PHONY: xsfclean +xsfclean: cleanscripts unpatch + dh_testdir + rm -rf .pc + rm -rf $(STAMP_DIR) $(SOURCE_DIR) + rm -rf imports + dh_clean debian/shlibs.local \ + debian/po/pothead + +# Generate the debconf templates POT file header. +debian/po/pothead: debian/po/pothead.in + sed -e 's/SOURCE_VERSION/$(SOURCE_VERSION)/' \ + -e 's/DATE/$(shell date "+%F %X%z"/)' <$< >$@ + +# Update POT and PO files. +.PHONY: updatepo +updatepo: debian/po/pothead + debian/scripts/debconf-updatepo --pot-header=pothead --verbose + +# Remove files from the upstream source tree that we don't need, or which have +# licensing problems. It must be run before creating the .orig.tar.gz. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: prune-upstream-tree +prune-upstream-tree: + # Ensure we're in the correct directory. + dh_testdir + grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf + +# Verify that there are no offsets or fuzz in the patches we apply. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: patch-audit +patch-audit: prepare unpatch + @echo -n "Auditing patches..."; \ + >$(STAMP_DIR)/log/patch; \ + FUZZY=; \ + while [ -n "$$($(QUILT) next)" ]; do \ + RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\ + case "$$RESULT" in \ + succeeded) \ + echo "fuzzy patch: $$($(QUILT) top)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \ + FUZZY=yes; \ + ;; \ + FAILED) \ + echo "broken patch: $$($(QUILT) next)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \ + exit 1; \ + ;; \ + esac; \ + done; \ + if [ -n "$$FUZZY" ]; then \ + echo "there were fuzzy patches; please fix."; \ + exit 1; \ + else \ + echo "done."; \ + fi + +# Generate the maintainer scripts. +.PHONY: genscripts +stampdir_targets+=genscripts +genscripts: $(STAMP_DIR)/genscripts +$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir + for FILE in debian/*.config.in \ + debian/*.postinst.in \ + debian/*.postrm.in \ + debian/*.preinst.in \ + debian/*.prerm.in; do \ + if [ -e "$$FILE" ]; then \ + MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \ + sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \ + cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \ + sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \ + sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \ + -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \ + -e 's/@DEFAULT_DCRESOLUTIONS@/$(DEFAULT_DCRESOLUTIONS)/' \ + <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \ + rm $$MAINTSCRIPT.tmp; \ + fi; \ + done + # Validate syntax of generated shell scripts. + #sh debian/scripts/validate-posix-sh debian/*.config \ + # debian/*.postinst \ + # debian/*.postrm \ + # debian/*.preinst \ + # debian/*.prerm + >$@ + +# Generate the shlibs.local file. +debian/shlibs.local: + cat debian/*.shlibs >$@ + +SERVERMINVERS = $(shell cat /usr/share/xserver-xorg/serverminver 2>/dev/null) +VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null) +INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null) +SERVER_DEPENDS = xserver-xorg-core (>= $(SERVERMINVERS)) +VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI) +INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI) +ifeq ($(PACKAGE),) +PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control) +endif + +.PHONY: serverabi +serverabi: install +ifeq ($(SERVERMINVERS),) + @echo error: xserver-xorg-dev needs to be installed + @exit 1 +else + echo "xserver:Depends=$(SERVER_DEPENDS)" >> debian/$(PACKAGE).substvars + echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars + echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars +endif + +# vim:set noet ai sts=8 sw=8 tw=0: --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/103_enable_cornertapping.patch +++ xfree86-driver-synaptics-0.99.3/debian/patches/103_enable_cornertapping.patch @@ -0,0 +1,15 @@ +Index: 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-24 15:48:29.000000000 +0100 +@@ -464,8 +464,8 @@ + pars->guestmouse_off = xf86SetBoolOption(opts, "GuestMouseOff", FALSE); + 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); --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/series +++ xfree86-driver-synaptics-0.99.3/debian/patches/series @@ -0,0 +1,8 @@ +01-synaptics-dont-grab-if-not-on-current-VT.patch +103_enable_cornertapping.patch +104_always_enable_tapping.patch +105_correct_multifinger_click.patch +106_always_enable_vert_edge_scroll.patch +108_syndaemon_xinput_props.patch +109_override_alps_settings.patch +110_remove_bound_auto_adjust.patch --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/104_always_enable_tapping.patch +++ xfree86-driver-synaptics-0.99.3/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 2009-01-26 09:52:14.000000000 +0200 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2009-01-26 09:52:27.000000000 +0200 +@@ -403,10 +403,10 @@ + palmMinWidth = 10; + } + +- /* 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 = 2; ++ tapButton3 = 3; + + /* Enable multifinger-click if we don't have right/middle button, + otherwise clickFinger is always button 1. */ --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch +++ xfree86-driver-synaptics-0.99.3/debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch @@ -0,0 +1,14 @@ +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/src/synaptics.c ++++ xserver-xorg-input-synaptics/src/synaptics.c +@@ -691,6 +691,9 @@ + + DBG(3, ErrorF("Synaptics DeviceOn called\n")); + ++ if (xf86Screens[0]->vtSema == FALSE) ++ return !Success; ++ + SetDeviceAndProtocol(local); + local->fd = xf86OpenSerial(local->options); + if (local->fd == -1) { --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/105_correct_multifinger_click.patch +++ xfree86-driver-synaptics-0.99.3/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; --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/106_always_enable_vert_edge_scroll.patch +++ xfree86-driver-synaptics-0.99.3/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 2009-01-26 09:52:44.000000000 +0200 ++++ xserver-xorg-input-synaptics/src/synaptics.c 2009-01-26 09:52:48.000000000 +0200 +@@ -413,8 +413,8 @@ + clickFinger2 = 2; + clickFinger3 = 3; + +- /* 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 */ --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/110_remove_bound_auto_adjust.patch +++ xfree86-driver-synaptics-0.99.3/debian/patches/110_remove_bound_auto_adjust.patch @@ -0,0 +1,20 @@ +Index: xserver-xorg-input-synaptics/src/synaptics.c +=================================================================== +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-03-26 16:58:30.000000000 +0100 +@@ -441,11 +441,11 @@ + pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", horizScrollDelta); + pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", vertScrollDelta); + pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", vertEdgeScroll); +- if (xf86CheckIfOptionUsedByName(opts, "RightEdge")) { ++ /*if (xf86CheckIfOptionUsedByName(opts, "RightEdge")) {*/ + pars->special_scroll_area_right = FALSE; +- } else { ++ /*} else { + pars->special_scroll_area_right = xf86SetBoolOption(opts, "SpecialScrollAreaRight", TRUE); +- } ++ }*/ + pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", horizEdgeScroll); + pars->scroll_edge_corner = xf86SetBoolOption(opts, "CornerCoasting", FALSE); + pars->scroll_twofinger_vert = xf86SetBoolOption(opts, "VertTwoFingerScroll", vertTwoFingerScroll); --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/108_syndaemon_xinput_props.patch +++ xfree86-driver-synaptics-0.99.3/debian/patches/108_syndaemon_xinput_props.patch @@ -0,0 +1,338 @@ +Index: xserver-xorg-input-synaptics/tools/syndaemon.c +=================================================================== +--- xserver-xorg-input-synaptics.orig/tools/syndaemon.c 2009-01-23 14:24:31.000000000 +0200 ++++ xserver-xorg-input-synaptics/tools/syndaemon.c 2009-01-26 09:43:16.000000000 +0200 +@@ -1,5 +1,6 @@ + /* + * Copyright © 2003-2004 Peter Osterlund ++ * Copyright © 2008 William Grant + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without +@@ -22,6 +23,7 @@ + * + * Authors: + * Peter Osterlund (petero2@telia.com) ++ * William Grant (wgrant@ubuntu.com) + */ + + #ifdef HAVE_CONFIG_H +@@ -39,9 +41,13 @@ + #include + #include + ++#include ++#include ++ + #include "synaptics.h" + + static SynapticsSHM *synshm; ++static int using_synshm; + static int pad_disabled; + static int disable_taps_only; + static int ignore_modifier_combos; +@@ -64,15 +70,114 @@ + fprintf(stderr, " -t Only disable tapping and scrolling, not mouse movements.\n"); + fprintf(stderr, " -k Ignore modifier keys when monitoring keyboard activity.\n"); + fprintf(stderr, " -K Like -k but also ignore Modifier+Key combos.\n"); ++ fprintf(stderr, " -S Use SHMConfig even if input device properties are available.\n"); + exit(1); + } + ++static XDevice ++*device_is_touchpad(Display *display, XDeviceInfo deviceinfo) ++{ ++ XDevice *device; ++ Atom *props; ++ int nprops; ++ char *name; ++ ++ device = XOpenDevice(display, deviceinfo.id); ++ if (!device) ++ return NULL; ++ ++ props = XListDeviceProperties(display, device, &nprops); ++ while (nprops--) { ++ name = XGetAtomName(display, props[nprops]); ++ if (!strcmp(name, "Synaptics Off")) { ++ free(name); ++ XFree(props); ++ return device; ++ } ++ free(name); ++ } ++ ++ XFree(props); ++ XCloseDevice(display, device); ++ return NULL; ++} ++ + static int +-enable_touchpad(void) ++get_touchpad_off(Display *display) ++{ ++ int numdevices, i; ++ XDeviceInfo *devicelist; ++ XDevice *device; ++ Atom realtype, prop; ++ int realformat; ++ unsigned long nitems, bytes_after; ++ unsigned char *data; ++ int result; ++ ++ if (using_synshm) ++ return synshm->touchpad_off; ++ ++ devicelist = XListInputDevices (display, &numdevices); ++ ++ prop = XInternAtom(display, "Synaptics Off", False); ++ ++ for (i = 0; i < numdevices; i++) { ++ if ((devicelist[i].use >= IsXExtensionDevice) && ++ (device = device_is_touchpad(display, devicelist[i]))) { ++ XGetDeviceProperty(display, device, prop, 0, 1, False, ++ XA_INTEGER, &realtype, &realformat, &nitems, ++ &bytes_after, &data); ++ ++ if (nitems < 1) { ++ fprintf(stderr, "Touchpad didn't return status information.\n"); ++ exit(2); ++ } ++ ++ result = data[0]; ++ XFree(devicelist); ++ XFree(data); ++ XCloseDevice(display, device); ++ return result; ++ } ++ } ++ XFree(devicelist); ++ return 1; ++} ++ ++static void ++set_touchpad_off(Display *display, int value) ++{ ++ int numdevices, i; ++ XDeviceInfo *devicelist; ++ XDevice *device; ++ Atom realtype, prop; ++ ++ if (using_synshm) { ++ synshm->touchpad_off = value; ++ return; ++ } ++ ++ devicelist = XListInputDevices (display, &numdevices); ++ ++ prop = XInternAtom(display, "Synaptics Off", False); ++ ++ for (i = 0; i < numdevices; i++) { ++ if ((devicelist[i].use >= IsXExtensionDevice) && ++ (device = device_is_touchpad(display, devicelist[i]))) { ++ XChangeDeviceProperty(display, device, prop, XA_INTEGER, 8, PropModeReplace, ++ (unsigned char *)&value, 1); ++ XCloseDevice(display, device); ++ } ++ } ++ XFree(devicelist); ++} ++ ++static int ++enable_touchpad(Display *display) + { + int ret = 0; + if (pad_disabled) { +- synshm->touchpad_off = 0; ++ set_touchpad_off(display, 0); + pad_disabled = 0; + ret = 1; + } +@@ -82,7 +187,10 @@ + static void + signal_handler(int signum) + { +- enable_touchpad(); ++ Display *display = XOpenDisplay(NULL); ++ enable_touchpad(display); ++ XCloseDisplay(display); ++ + if (pid_file) + unlink(pid_file); + kill(getpid(), signum); +@@ -156,18 +264,53 @@ + * Return non-zero if any physical touchpad button is currently pressed. + */ + static int +-touchpad_buttons_active(void) ++touchpad_buttons_active(Display *display) + { + int i; +- +- if (synshm->left || synshm->right || synshm->up || synshm->down) ++ if (using_synshm) { ++ if (synshm->left || synshm->right || synshm->up || synshm->down) ++ return 1; ++ for (i = 0; i < 8; i++) ++ if (synshm->multi[i]) + return 1; +- for (i = 0; i < 8; i++) +- if (synshm->multi[i]) ++ if (synshm->guest_left || synshm->guest_mid || synshm->guest_right) + return 1; +- if (synshm->guest_left || synshm->guest_mid || synshm->guest_right) +- return 1; +- return 0; ++ return 0; ++ } ++ else { ++ XDevice *device; ++ XDeviceInfo *devicelist; ++ XDeviceState *state; ++ XButtonState *buttonstate; ++ XInputClass *class; ++ int numdevices, classno, buttonno; ++ int pressed = 0; ++ ++ devicelist = XListInputDevices (display, &numdevices); ++ for (i = 0; i < numdevices; i++) ++ if ((devicelist[i].use >= IsXExtensionDevice) && ++ (device = device_is_touchpad(display, devicelist[i]))) { ++ state = XQueryDeviceState(display, device); ++ class = state->data; ++ ++ for (classno = 0; classno < state->num_classes; classno++) ++ { ++ if (class->class == ButtonClass) ++ { ++ buttonstate = (XButtonState *)class; ++ for (buttonno = 1; buttonno <= buttonstate->num_buttons; buttonno++) ++ if (buttonstate->buttons[buttonno / 8] & (1 << (buttonno % 8))) ++ pressed = 1; ++ } ++ class = (XInputClass *)((char *) class + class->length); ++ } ++ XFree(state); ++ XCloseDevice(display, device); ++ break; ++ } ++ XFree(devicelist); ++ return pressed; ++ } + } + + static double +@@ -191,23 +334,20 @@ + current_time = get_time(); + if (keyboard_activity(display)) + last_activity = current_time; +- if (touchpad_buttons_active()) ++ if (touchpad_buttons_active(display)) + last_activity = 0.0; + + if (current_time > last_activity + idle_time) { /* Enable touchpad */ +- if (enable_touchpad()) { ++ if (enable_touchpad(display)) { + if (!background) + printf("Enable\n"); + } + } else { /* Disable touchpad */ +- if (!pad_disabled && !synshm->touchpad_off) { ++ if (!pad_disabled && !get_touchpad_off(display)) { + if (!background) + printf("Disable\n"); + pad_disabled = 1; +- if (disable_taps_only) +- synshm->touchpad_off = 2; +- else +- synshm->touchpad_off = 1; ++ set_touchpad_off(display, disable_taps_only ? 2 : 1); + } + } + +@@ -254,7 +394,7 @@ + int ignore_modifier_keys = 0; + + /* Parse command line parameters */ +- while ((c = getopt(argc, argv, "i:m:dtp:kK?")) != EOF) { ++ while ((c = getopt(argc, argv, "i:m:dtp:kKS?")) != EOF) { + switch(c) { + case 'i': + idle_time = atof(optarg); +@@ -278,6 +418,9 @@ + ignore_modifier_combos = 1; + ignore_modifier_keys = 1; + break; ++ case 'S': ++ using_synshm = 1; ++ break; + default: + usage(); + break; +@@ -293,20 +436,42 @@ + exit(2); + } + +- /* Connect to the shared memory area */ +- if ((shmid = shmget(SHM_SYNAPTICS, sizeof(SynapticsSHM), 0)) == -1) { +- if ((shmid = shmget(SHM_SYNAPTICS, 0, 0)) == -1) { +- fprintf(stderr, "Can't access shared memory area. SHMConfig disabled?\n"); +- exit(2); +- } else { +- fprintf(stderr, "Incorrect size of shared memory area. Incompatible driver version?\n"); ++ if (!using_synshm) { ++ XDeviceInfo *devicelist; ++ XDevice *device; ++ int numdevices, i; ++ ++ using_synshm = 1; ++ ++ devicelist = XListInputDevices (display, &numdevices); ++ for (i =0; i < numdevices; i++) ++ if ((devicelist[i].use >= IsXExtensionDevice) && ++ (device = device_is_touchpad(display, devicelist[i]))) { ++ XCloseDevice(display, device); ++ using_synshm = 0; ++ break; ++ } ++ XFree(devicelist); ++ } ++ ++ ++ if (using_synshm) { ++ /* Connect to the shared memory area */ ++ if ((shmid = shmget(SHM_SYNAPTICS, sizeof(SynapticsSHM), 0)) == -1) { ++ if ((shmid = shmget(SHM_SYNAPTICS, 0, 0)) == -1) { ++ fprintf(stderr, "Can't access shared memory area. SHMConfig disabled?\n"); ++ exit(2); ++ } else { ++ fprintf(stderr, "Incorrect size of shared memory area. Incompatible driver version?\n"); ++ exit(2); ++ } ++ } ++ ++ if ((synshm = (SynapticsSHM*) shmat(shmid, NULL, 0)) == NULL) { ++ perror("shmat"); + exit(2); + } + } +- if ((synshm = (SynapticsSHM*) shmat(shmid, NULL, 0)) == NULL) { +- perror("shmat"); +- exit(2); +- } + + /* Install a signal handler to restore synaptics parameters on exit */ + install_signal_handler(); +Index: xserver-xorg-input-synaptics/configure.ac +=================================================================== +--- xserver-xorg-input-synaptics.orig/configure.ac 2009-01-23 14:24:31.000000000 +0200 ++++ xserver-xorg-input-synaptics/configure.ac 2009-01-26 09:43:16.000000000 +0200 +@@ -110,7 +110,7 @@ + AC_SUBST([CFLAGS]) + + # Checks for libraries. +-PKG_CHECK_MODULES(XLIB, x11) # needed for syndaemon ++PKG_CHECK_MODULES(XLIB, x11 xi) # needed for syndaemon + + # Checks for header files. + AC_HEADER_STDC --- xfree86-driver-synaptics-0.99.3.orig/debian/patches/109_override_alps_settings.patch +++ xfree86-driver-synaptics-0.99.3/debian/patches/109_override_alps_settings.patch @@ -0,0 +1,109 @@ +Index: xserver-xorg-input-synaptics/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-02-25 17:11:15.000000000 +0100 +@@ -67,6 +67,7 @@ + #include + #include + #include ++#include + + #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 + #include "mipointer.h" +@@ -124,6 +125,8 @@ + static Bool QueryHardware(LocalDevicePtr); + static void ReadDevDimensions(LocalDevicePtr); + ++static Bool is_alps(LocalDevicePtr local); ++ + #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3 + void InitDeviceProperties(LocalDevicePtr local); + int SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop, +@@ -300,12 +303,23 @@ + return value; + } + ++static Bool ++is_alps(LocalDevicePtr local) ++{ ++ Bool name_matches = (strstr(local->name, "ALPS") != NULL); ++ ++ return name_matches; ++} ++ + static void set_default_parameters(LocalDevicePtr local) + { + SynapticsPrivate *priv = local->private; /* read-only */ + pointer opts = local->options; /* read-only */ + SynapticsSHM *pars = &priv->synpara_default; /* modified */ + ++ /* See whether it's an ALPS device */ ++ Bool is_alps_device = is_alps(local); ++ + int horizScrollDelta, vertScrollDelta; /* pixels */ + int tapMove; /* pixels */ + int l, r, t, b; /* left, right, top, bottom */ +@@ -422,6 +436,22 @@ + vertTwoFingerScroll = priv->has_double ? TRUE : FALSE; + horizTwoFingerScroll = FALSE; + ++ /* Nasty hack: customised settings for ALPS */ ++ if (is_alps_device) { ++ xf86Msg(X_INFO, "ALPS touchpad detected: %s. Applying customised settings...\n", local->name); ++ l = 120; ++ r = 900; ++ t = 120; ++ b = 650; ++ fingerLow = 14; ++ fingerHigh = 15; ++ tapMove = 110; ++ horizScrollDelta = 20; ++ vertScrollDelta = 20; ++ vertTwoFingerScroll = TRUE; ++ accelFactor = 0.02; ++ } ++ + /* set the parameters */ + pars->left_edge = xf86SetIntOption(opts, "LeftEdge", l); + pars->right_edge = xf86SetIntOption(opts, "RightEdge", r); +@@ -434,7 +464,12 @@ + pars->tap_time = xf86SetIntOption(opts, "MaxTapTime", 180); + pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", tapMove); + pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180); +- pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); ++ if (is_alps_device) { ++ pars->click_time = xf86SetIntOption(opts, "ClickTime", 0); ++ } ++ else { ++ pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); ++ } + pars->fast_taps = xf86SetBoolOption(opts, "FastTaps", FALSE); + pars->emulate_mid_button_time = xf86SetIntOption(opts, "EmulateMidButtonTime", 75); + pars->emulate_twofinger_z = xf86SetIntOption(opts, "EmulateTwoFingerMinZ", emulateTwoFingerMinZ); +@@ -480,12 +515,23 @@ + pars->palm_detect = xf86SetBoolOption(opts, "PalmDetect", FALSE); + pars->palm_min_width = xf86SetIntOption(opts, "PalmMinWidth", palmMinWidth); + pars->palm_min_z = xf86SetIntOption(opts, "PalmMinZ", palmMinZ); +- pars->single_tap_timeout = xf86SetIntOption(opts, "SingleTapTimeout", 180); ++ if (is_alps_device) { ++ pars->single_tap_timeout = xf86SetIntOption(opts, "SingleTapTimeout", 0); ++ } ++ else { ++ pars->single_tap_timeout = xf86SetIntOption(opts, "SingleTapTimeout", 180); ++ } + pars->press_motion_min_z = xf86SetIntOption(opts, "PressureMotionMinZ", pressureMotionMinZ); + pars->press_motion_max_z = xf86SetIntOption(opts, "PressureMotionMaxZ", pressureMotionMaxZ); + +- pars->min_speed = synSetFloatOption(opts, "MinSpeed", 0.4); +- pars->max_speed = synSetFloatOption(opts, "MaxSpeed", 0.7); ++ if (is_alps_device) { ++ pars->min_speed = synSetFloatOption(opts, "MinSpeed", 0.45); ++ pars->max_speed = synSetFloatOption(opts, "MaxSpeed", 0.75); ++ } ++ else { ++ pars->min_speed = synSetFloatOption(opts, "MinSpeed", 0.2); ++ pars->max_speed = synSetFloatOption(opts, "MaxSpeed", 0.5); ++ } + pars->accl = synSetFloatOption(opts, "AccelFactor", accelFactor); + pars->trackstick_speed = synSetFloatOption(opts, "TrackstickSpeed", 40); + pars->scroll_dist_circ = synSetFloatOption(opts, "CircScrollDelta", 0.1); --- xfree86-driver-synaptics-0.99.3.orig/test/test-pad.c +++ xfree86-driver-synaptics-0.99.3/test/test-pad.c @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include +#include +#include + +int +getbyte(int fd, unsigned char *b) +{ + return(read(fd, b, 1) == 1); +} + +int +putbyte(int fd, unsigned char b) +{ + unsigned char ack; + + printf("write %02X\n", b); + if (write(fd, &b, 1) != 1) { + fprintf(stderr, "error write: %s\n", strerror(errno)); + return 0; + } + + if (!getbyte(fd, &ack)) { + fprintf(stderr, "error read: %s\n", strerror(errno)); + return 0; + } + printf("read %02X\n", ack); + + if (ack != 0xFA) { + fprintf(stderr, "error ack\n"); + return 0; + } + + return 1; +} + +int +special_cmd(int fd, unsigned char cmd) +{ + int i; + + if (putbyte(fd, 0xE6)) + for (i = 0; i < 4; i++) { + printf("special_cmd %i\n", i); + if ((!putbyte(fd, 0xE8)) || (!putbyte(fd, (cmd>>6)&0x3))) + return 0; + cmd<<=2; + } + else + return 0; + return 1; +} + +int +send_cmd(int fd, unsigned char cmd) +{ + return (special_cmd(fd, cmd) && + putbyte(fd, 0xE9)); +} + +int +identify(int fd, unsigned long int *ident) +{ + unsigned char id[3]; + + if (send_cmd(fd, 0x00) && + getbyte(fd, &id[0]) && + getbyte(fd, &id[1]) && + getbyte(fd, &id[2])) { + *ident = (id[0]<<16)|(id[1]<<8)|id[2]; + printf("ident %06X\n", *ident); + return 1; + } else { + fprintf(stderr, "error identify\n"); + return 0; + } +} + +int +reset(int fd) +{ + unsigned char r[2]; + + if (!putbyte(fd, 0xFF)) { + fprintf(stderr, "error reset\n"); + return 0; + } + + sleep(5); + + if (getbyte(fd, &r[0]) && getbyte(fd, &r[1])) + if (r[0] == 0xAA && r[1] == 0x00) { + fprintf(stderr, "reset done\n"); + return 1; + } + fprintf(stderr, "error reset ack\n"); + return 0; +} + +int +main(int argc, char* argv[]) +{ + int fd; + unsigned long int ident; + + fd = open("/dev/psaux", O_RDWR); + if (fd == -1) { + fprintf(stderr, "error open: %s\n", strerror(errno)); + exit(0); + } + + reset(fd); + identify(fd, &ident); + + close(fd); + + exit(0); +} --- xfree86-driver-synaptics-0.99.3.orig/test/testprotocol.c +++ xfree86-driver-synaptics-0.99.3/test/testprotocol.c @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include + +static int outputformat = 0; + +void +SynapticsReadPacket(int fd) +{ + int count = 0; + int inSync = 0; + unsigned char pBuf[7], u; + + while (read(fd,&u, 1) == 1) { + pBuf[count++] = u; + + /* check first byte */ + if ((count == 1) && ((u & 0xC8) != 0x80)) { + inSync = 0; + count = 0; + printf("Synaptics driver lost sync at 1st byte\n"); + continue; + } + + /* check 4th byte */ + if ((count == 4) && ((u & 0xc8) != 0xc0)) { + inSync = 0; + count = 0; + printf("Synaptics driver lost sync at 4th byte\n"); + continue; + } + + if (count >= 6) { /* Full packet received */ + if (!inSync) { + inSync = 1; + printf("Synaptics driver resynced.\n"); + } + count = 0; + switch (outputformat) { + case 1: + printf("Paket:%02X-%02X-%02X-%02X-%02X-%02X\n", + pBuf[0], pBuf[1], pBuf[2], pBuf[3], pBuf[4], pBuf[5]); + break; + case 2: + printf("x = %i, y = %i, z = %i, w = %i, l = %i, r = %i\n", + ((pBuf[3] & 0x10) << 8) | ((pBuf[1] & 0x0f) << 8) | pBuf[4], + ((pBuf[3] & 0x20) << 7) | ((pBuf[1] & 0xf0) << 4) | pBuf[5], + ((pBuf[0] & 0x30) >> 2) | ((pBuf[0] & 0x04) >> 1) | ((pBuf[3] & 0x04) >> 2), + ((pBuf[0] & 0x30) >> 2) | ((pBuf[0] & 0x04) >> 1) | ((pBuf[3] & 0x04) >> 2), + (pBuf[0] & 0x01) ? 1 : 0, + (pBuf[0] & 0x2) ? 1 : 0); + break; + default: + break; + } + } + } +} + +int +main(int argc, char* argv[]) +{ + int fd; + + if (argc > 1) + outputformat = atoi(argv[1]); + + + fd = open("/dev/psaux", O_RDONLY); + if (fd == -1) { + printf("Error opening /dev/psaux\n"); + exit(1); + } + + SynapticsReadPacket(fd); + + close(fd); + + exit(0); +}