--- 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);
+}