xserver-xorg-input-synaptics: Changes to 'ubuntu'
NEWS | 458 -------
configure.ac | 61
debian/66-xorg-synaptics.rules | 16
debian/NEWS | 31
debian/README.source | 73 +
debian/changelog | 245 +++
debian/compat | 2
debian/control | 26
debian/copyright | 2
debian/patches/01-synaptics-dont-grab-if-not-on-current-VT.patch | 10
debian/patches/02-do-not-use-synaptics-for-keyboards.patch | 66 +
debian/patches/105_always_enable_multifinger_click.patch | 19
debian/patches/105_correct_multifinger_click.patch | 14
debian/patches/107_reduce_cursor_speed.patch | 15
debian/patches/108_syndaemon_xinput_props.patch | 338 -----
debian/patches/114_jumpy_cursor_first_part.patch | 218 +++
debian/patches/series | 6
debian/rules | 12
debian/xfree86-driver-synaptics.README.Debian | 7
debian/xserver-xorg-input-synaptics.README.Debian | 41
debian/xserver-xorg-input-synaptics.docs | 1
debian/xserver-xorg-input-synaptics.install | 1
debian/xserver-xorg-input-synaptics.links | 1
debian/xsfbs/repack.sh | 32
debian/xsfbs/xsfbs.mk | 21
debian/xsfbs/xsfbs.sh | 311 -----
docs/tapndrag.dia | 164 +-
fdi/11-x11-synaptics.fdi | 22
include/synaptics-properties.h | 24
include/synaptics.h | 70 -
man/synaptics.man | 434 +++++--
man/synclient.man | 19
man/syndaemon.man | 18
src/alpscomm.c | 20
src/eventcomm.c | 147 +-
src/eventcomm.h | 1
src/properties.c | 157 ++
src/ps2comm.c | 125 +-
src/ps2comm.h | 44
src/psmcomm.c | 38
src/synaptics.c | 570 ++++++---
src/synapticsstr.h | 89 +
src/synproto.h | 8
tools/Makefile.am | 9
tools/synclient.c | 616 +++++++---
tools/syndaemon.c | 388 +++++-
46 files changed, 2950 insertions(+), 2040 deletions(-)
New commits:
commit 99b7828fd98407d21fad44ccdf2ff0b517c82126
Author: Timo Aaltonen <tjaalton@cc.hut.fi>
Date: Mon Dec 7 17:19:32 2009 +0200
Merge changes from ubuntu.
diff --git a/debian/changelog b/debian/changelog
index 5aa13dc..12f5b8e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,19 @@
+xserver-xorg-input-synaptics (1.2.0-3ubuntu1) UNRELEASED; urgency=low
+
+ * Merge from Debian experimental, remaining changes:
+ - 103_enable_cornertapping.patch: Enable right/middle clicks by
+ tapping in the bottom- and top-right corners.
+ - 104_always_enable_tapping.patch: Enable tapping regardless of the
+ presence of physical buttons.
+ - 106_always_enable_vert_edge_scroll.patch: Enable vertical edge
+ tapping by default even if we enable two-finger scrolling as well.
+ * Disabled until fixed to apply and work:
+ - 114_jumpy_cursor_first_part.patch
+ * Dropped, using udev now:
+ - 115_jumpy_cursor_second_part.patch
+
+ -- Timo Aaltonen <tjaalton@ubuntu.com> Mon, 07 Dec 2009 16:47:56 +0200
+
xserver-xorg-input-synaptics (1.2.0-3) experimental; urgency=low
[ Julien Cristau ]
@@ -38,6 +54,87 @@ xserver-xorg-input-synaptics (1.2.0-1) unstable; urgency=low
-- Mattia Dongili <malattia@debian.org> Thu, 19 Nov 2009 21:24:49 +0900
+xserver-xorg-input-synaptics (1.1.2-1ubuntu7) karmic; urgency=low
+
+ * debian/patches:
+ - 115_jumpy_cursor_second_part.patch: Set AreaBottomEdge to
+ 4100 for Inspiron 1011 and Inspiron 1012.
+
+ -- Alberto Milone <alberto.milone@canonical.com> Wed, 14 Oct 2009 16:55:16 +0200
+
+xserver-xorg-input-synaptics (1.1.2-1ubuntu6) karmic; urgency=low
+
+ * debian/patches:
+ - Split 114_jumpy_cursor_threshold.patch into
+ 114_jumpy_cursor_first_part.patch and
+ 115_jumpy_cursor_second_part.patch so as to keep options
+ which belong in the fdi file separate from the code.
+ - 115_jumpy_cursor_second_part.patch:
+ + Add quirk for Inspiron 1012.
+ - Remove 114_jumpy_cursor_threshold.patch_old.
+
+ -- Alberto Milone <alberto.milone@canonical.com> Mon, 05 Oct 2009 12:09:14 +0200
+
+xserver-xorg-input-synaptics (1.1.2-1ubuntu5) karmic; urgency=low
+
+ * Add lpia to the list of Architectures. LP: #413579.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Mon, 07 Sep 2009 10:44:54 -0700
+
+xserver-xorg-input-synaptics (1.1.2-1ubuntu4) karmic; urgency=low
+
+ * debian/patches:
+ - 112_jumpy_cursor_quirks.patch:
+ + Drop patch.
+ - 114_jumpy_cursor_threshold.patch:
+ + Replace 112_jumpy_cursor_quirks.patch.
+ + Make the threshold an XInput property.
+ + Add quirk for Dell Mini10v and for HP Mini 1000 in the
+ fdi file.
+
+ -- Alberto Milone <alberto.milone@canonical.com> Wed, 02 Sep 2009 10:44:28 +0200
+
+xserver-xorg-input-synaptics (1.1.2-1ubuntu3) karmic; urgency=low
+
+ * debian/patches:
+ - 112_jumpy_cursor_quirks.patch: Make sure that the quirk
+ affects only the Dell Mini 10v (LP: #405943).
+ - 103_enable_cornertapping.patch: Don't trigger middle click
+ when tapping on the top right corner button (LP: #386017).
+
+ -- Alberto Milone <alberto.milone@canonical.com> Mon, 17 Aug 2009 10:31:14 +0200
+
+xserver-xorg-input-synaptics (1.1.2-1ubuntu2) karmic; urgency=low
+
+ * debian/patches:
+ - 105_correct_multifinger_click.patch: Drop patch as it breaks
+ the expected behavior for multitouch clicking (LP: #320585).
+ - 111_add_active_area.patch: Backport "Synaptics Area" property
+ from upstream (LP: #402863).
+ - 112_jumpy_cursor_quirks.patch: Add Quirk for Dell Mini 10v
+ touchpad (LP: #402863).
+ - 113_add_capabilities.patch: Backport read-only "Synaptics
+ Capabilities" property from upstream.
+
+ -- Alberto Milone <alberto.milone@canonical.com> Wed, 22 Jul 2009 10:42:11 +0200
+
+xserver-xorg-input-synaptics (1.1.2-1ubuntu1) karmic; urgency=low
+
+ * Merge from Debian unstable, Remaining changes:
+ - Restore the Ubuntu patch series. (LP: #378391)
+ - 103_enable_cornertapping.patch: Enable right/middle clicks by
+ tapping in the bottom- and top-right corners.
+ - 104_always_enable_tapping.patch: Enable tapping regardless of the
+ presence of physical buttons.
+ - 105_correct_multifinger_click.patch: Swap the right/middle clicks
+ generated by multi-finger tapping.
+ - 106_always_enable_vert_edge_scroll.patch: Enable vertical edge
+ tapping by default even if we enable two-finger scrolling as well.
+ - 110_remove_bound_auto_adjust.patch: Don't auto-adjust to bounds of
+ the hardware scroll area.
+
+ -- Robert Hooker (Sarvatt) <sarvatt@gmail.com> Sun, 28 Jun 2009 18:13:52 -0400
+
xserver-xorg-input-synaptics (1.1.2-1) unstable; urgency=low
[ Mattia Dongili ]
@@ -89,6 +186,43 @@ xserver-xorg-input-synaptics (0.99.3-3) experimental; urgency=low
-- Julien Cristau <jcristau@debian.org> Mon, 26 Jan 2009 09:08:10 +0100
+xfree86-driver-synaptics (0.99.3-2ubuntu4) jaunty; urgency=low
+
+ * debian/patches/110_remove_bound_auto_adjust.patch:
+ - Small change to make sure that the driver does not
+ auto-adjust to the bounds of the hardware scroll area
+ as this causes problem to the touchpads of Acer Aspire
+ One units (LP: #320632).
+
+ -- Alberto Milone <alberto.milone@canonical.com> 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) <albertomilone@alice.it> 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) <albertomilone@alice.it> Sat, 31 Jan 2009 18:48:37 +0100
+
xfree86-driver-synaptics (0.99.3-2ubuntu1) jaunty; urgency=low
* Merge from Debian experimental.
diff --git a/debian/patches/105_always_enable_multifinger_click.patch b/debian/patches/105_always_enable_multifinger_click.patch
deleted file mode 100644
index a43d05c..0000000
--- a/debian/patches/105_always_enable_multifinger_click.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Index: xserver-xorg-input-synaptics/src/synaptics.c
-===================================================================
---- xserver-xorg-input-synaptics.orig/src/synaptics.c 2009-01-26 09:52:27.000000000 +0200
-+++ xserver-xorg-input-synaptics/src/synaptics.c 2009-01-26 09:52:44.000000000 +0200
-@@ -408,11 +408,10 @@
- tapButton2 = 2;
- tapButton3 = 3;
-
-- /* Enable multifinger-click if we don't have right/middle button,
-- otherwise clickFinger is always button 1. */
-+ /* Enable multifinger-click */
- clickFinger1 = 1;
-- clickFinger2 = priv->has_right ? 1 : 3;
-- clickFinger3 = priv->has_middle ? 1 : 2;
-+ clickFinger2 = 2;
-+ clickFinger3 = 3;
-
- /* Enable vert edge scroll if we can't detect doubletap */
- vertEdgeScroll = priv->has_double ? FALSE : TRUE;
diff --git a/debian/patches/105_correct_multifinger_click.patch b/debian/patches/105_correct_multifinger_click.patch
new file mode 100644
index 0000000..b620f6c
--- /dev/null
+++ b/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;
diff --git a/debian/patches/107_reduce_cursor_speed.patch b/debian/patches/107_reduce_cursor_speed.patch
deleted file mode 100644
index b7edcc7..0000000
--- a/debian/patches/107_reduce_cursor_speed.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: xserver-xorg-input-synaptics/src/synaptics.c
-===================================================================
---- xserver-xorg-input-synaptics.orig/src/synaptics.c 2009-01-26 09:52:48.000000000 +0200
-+++ xserver-xorg-input-synaptics/src/synaptics.c 2009-01-26 09:52:54.000000000 +0200
-@@ -483,8 +483,8 @@
- 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);
-+ pars->min_speed = synSetFloatOption(opts, "MinSpeed", 0.02);
-+ 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);
diff --git a/debian/patches/108_syndaemon_xinput_props.patch b/debian/patches/108_syndaemon_xinput_props.patch
deleted file mode 100644
index 4a7986b..0000000
--- a/debian/patches/108_syndaemon_xinput_props.patch
+++ /dev/null
@@ -1,338 +0,0 @@
-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 <sys/time.h>
- #include <sys/stat.h>
-
-+#include <X11/Xatom.h>
-+#include <X11/extensions/XInput.h>
-+
- #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
diff --git a/debian/patches/114_jumpy_cursor_first_part.patch b/debian/patches/114_jumpy_cursor_first_part.patch
new file mode 100644
index 0000000..91a66df
--- /dev/null
+++ b/debian/patches/114_jumpy_cursor_first_part.patch
@@ -0,0 +1,218 @@
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/include/synaptics.h xserver-xorg-input-synaptics-1.1.2/include/synaptics.h
+--- xserver-xorg-input-synaptics-1.1.2.orig/include/synaptics.h 2009-09-29 18:05:07.019829000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/include/synaptics.h 2009-09-29 18:06:43.334839549 +0200
+@@ -135,6 +135,7 @@ typedef struct _SynapticsSHM
+ double press_motion_max_factor; /* factor applied on speed when finger pressure is at minimum */
+ Bool grab_event_device; /* grab event device for exclusive use? */
+ int area_left_edge, area_right_edge, area_top_edge, area_bottom_edge; /* area coordinates absolute */
++ int jumpycursor_threshold; /* jumpy cursor threshold */
+ } SynapticsSHM;
+
+ /*
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/include/synaptics-properties.h xserver-xorg-input-synaptics-1.1.2/include/synaptics-properties.h
+--- xserver-xorg-input-synaptics-1.1.2.orig/include/synaptics-properties.h 2009-09-29 18:05:14.659579000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/include/synaptics-properties.h 2009-09-29 18:06:43.334839549 +0200
+@@ -149,4 +149,7 @@
+ * has_double, has_triple */
+ #define SYNAPTICS_PROP_CAPABILITIES "Synaptics Capabilities"
+
++/* 32 bit */
++#define SYNAPTICS_PROP_JUMPYCURSOR_THRESHOLD "Synaptics Jumpy Cursor Threshold"
++
+ #endif /* _SYNAPTICS_PROPERTIES_H_ */
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/man/synaptics.man xserver-xorg-input-synaptics-1.1.2/man/synaptics.man
+--- xserver-xorg-input-synaptics-1.1.2.orig/man/synaptics.man 2009-09-29 18:05:14.659579000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/man/synaptics.man 2009-09-29 18:06:43.334839549 +0200
+@@ -486,6 +486,14 @@ Ignore movements, scrolling and tapping
+ The option is disabled by default and can be enabled by setting the
+ AreaBottomEdge option to any integer value other than zero. Property: "Synaptics Area"
+ .
++.TP
++.BI "Option \*qJumpyCursorThreshold\*q \*q" integer \*q
++Set the threshold above which movement events are ignored on single-touch touchpads.
++.
++The option is disabled by default and can be enabled by setting the
++JumpyCursorThreshold option to any integer value other than zero. Property: "Synaptics
++Jumpy Cursor Threshold"
++.
+ .LP
+ A tap event happens when the finger is touched and released in a time
+ interval shorter than MaxTapTime, and the touch and release
+@@ -839,6 +847,14 @@ scrolling.
+ 8 bit (BOOL), 5 values (read-only), has left button, has middle button, has
+ right button, two-finger detection, three-finger detection.
+
++.TP 7
++.BI "Synaptics Jumpy Cursor Threshold"
++The Synaptics Jumpy Cursor Threshold parameter is used to suppress movements (which
++take place in 20 milliseconds or less) whose covered distance is greater than or
++equal to the threshold on single-touch touchpads. This property is disabled by default.
++
++32 bit, 1 value. 0 disables the property.
++
+ .SH "NOTES"
+ There is an example hal policy file in
+ .I ${sourcecode}/fdi/11-x11-synaptics.fdi
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/src/properties.c xserver-xorg-input-synaptics-1.1.2/src/properties.c
+--- xserver-xorg-input-synaptics-1.1.2.orig/src/properties.c 2009-09-29 18:05:14.659579000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/src/properties.c 2009-09-29 18:06:43.334839549 +0200
+@@ -82,6 +82,7 @@ Atom prop_pressuremotion_factor = 0;
+ Atom prop_grab = 0;
+ Atom prop_area = 0;
+ Atom prop_capabilities = 0;
++Atom prop_jumpycursor_threshold = 0;
+
+ static Atom
+ InitAtom(DeviceIntPtr dev, char *name, int format, int nvalues, int *values)
+@@ -265,6 +266,8 @@ InitDeviceProperties(LocalDevicePtr loca
+ values[3] = priv->has_double;
+ values[4] = priv->has_triple;
+ prop_capabilities = InitAtom(local->dev, SYNAPTICS_PROP_CAPABILITIES, 8, 5, values);
++
++ prop_jumpycursor_threshold = InitAtom(local->dev, SYNAPTICS_PROP_JUMPYCURSOR_THRESHOLD, 32, 1, ¶->jumpycursor_threshold);
+ }
+
+ int
+@@ -616,6 +619,12 @@ SetProperty(DeviceIntPtr dev, Atom prope
+ para->area_right_edge = area[1];
+ para->area_top_edge = area[2];
+ para->area_bottom_edge = area[3];
++ } else if (property == prop_jumpycursor_threshold)
++ {
++ if (prop->size != 1 || prop->format != 32 || prop->type != XA_INTEGER)
++ return BadMatch;
++
++ para->jumpycursor_threshold = *(INT32*)prop->data;
+ } else if (property == prop_capabilities)
+ {
+ /* read-only */
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/src/synaptics.c xserver-xorg-input-synaptics-1.1.2/src/synaptics.c
+--- xserver-xorg-input-synaptics-1.1.2.orig/src/synaptics.c 2009-09-29 18:05:07.019829000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/src/synaptics.c 2009-09-29 18:06:43.334839549 +0200
+@@ -125,6 +125,9 @@ static Bool DeviceClose(DeviceIntPtr);
+ static Bool QueryHardware(LocalDevicePtr);
+ static void ReadDevDimensions(LocalDevicePtr);
+
++int old_time_millis = 0;
++Bool was_time_skipped = FALSE;
++
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
+ void InitDeviceProperties(LocalDevicePtr local);
+ int SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
+@@ -509,6 +512,7 @@ static void set_default_parameters(Local
+ pars->press_motion_min_factor = xf86SetRealOption(opts, "PressureMotionMinFactor", 1.0);
+ pars->press_motion_max_factor = xf86SetRealOption(opts, "PressureMotionMaxFactor", 1.0);
+ pars->grab_event_device = xf86SetBoolOption(opts, "GrabEventDevice", TRUE);
++ pars->jumpycursor_threshold = xf86SetIntOption(opts, "JumpyCursorThreshold", 0);
+
+ /* Warn about (and fix) incorrectly configured TopEdge/BottomEdge parameters */
+ if (pars->top_edge > pars->bottom_edge) {
+@@ -1448,11 +1452,12 @@ HandleTapProcessing(SynapticsPrivate *pr
+ #define HIST(a) (priv->move_hist[((priv->hist_index - (a) + SYNAPTICS_MOVE_HISTORY) % SYNAPTICS_MOVE_HISTORY)])
+
+ static void
+-store_history(SynapticsPrivate *priv, int x, int y, unsigned int millis)
++store_history(SynapticsPrivate *priv, int x, int y, int num_fingers, unsigned int millis)
+ {
+ int idx = (priv->hist_index + 1) % SYNAPTICS_MOVE_HISTORY;
+ priv->move_hist[idx].x = x;
+ priv->move_hist[idx].y = y;
++ priv->move_hist[idx].num_fingers = num_fingers;
+ priv->move_hist[idx].millis = millis;
+ priv->hist_index = idx;
+ }
+@@ -1601,11 +1606,70 @@ ComputeDeltas(SynapticsPrivate *priv, st
+ dy += hw->guest_dy;
+ }
+
++ /* Handle quirks here */
++ if (dx || dy) {
++ /* Work around issues caused by two fingers on multi-touch
++ * models
++ */
++ if (priv->has_double) {
++ if ((hw->numFingers < 2) &&
++ ((HIST(0).num_fingers >= 2) || (HIST(1).num_fingers >= 2) ||
++ (HIST(2).num_fingers >= 2) || (HIST(3).num_fingers >= 2) )) {
++ dx = dy = 0;
++ }
++ old_time_millis = hw->millis;
++ }
++ /* Work around issues caused by two fingers on single-touch
++ * models
++ */
++ else {
++ /* If para->jumpycursor_threshold <= 0, quirks are not
++ * available
++ */
++ if (para->jumpycursor_threshold <= 0)
++ goto post_quirks;
++
++ int elapsed_time = hw->millis - HIST(0).millis;
++
++ /* Ignore deltas as they couldn't possibly happen in so little time */
++ if (elapsed_time <= 20 && (abs(dx) >= para->jumpycursor_threshold || abs(dy) >= para->jumpycursor_threshold)) {
++ dx = dy = 0.0;
++ was_time_skipped = FALSE;
++ }
++ /* A comparison between the timestamp in priv->move_hist and hw->millis shows
++ * that something went wrong and that an event was skipped, hence the deltas
++ * are wrong.
++ * Let's ignore the deltas and append the skipped event to priv->move_hist
++ * otherwise the next deltas will be wrong too.
++ */
++ else if (old_time_millis > 0 && (HIST(0).millis != old_time_millis)) {
++ dx = dy = 0.0;
++ was_time_skipped = TRUE;
++ }
++ /* Something went wrong and an event was previously skipped, hence these deltas
++ * are wrong.
++ * Let's ignore the deltas and set was_time_skipped to FALSE as the next deltas
++ * should be good.
++ */
++ else {
++ if (was_time_skipped) {
++ dx = 0.0;
++ dy = 0.0;
++ }
++ was_time_skipped = FALSE;
++ }
++
++ old_time_millis = hw->millis;
++ }
++
++ }
++post_quirks:
++
+ *dxP = dx;
+ *dyP = dy;
+
+ /* generate a history of the absolute positions */
+- store_history(priv, hw->x, hw->y, hw->millis);
++ store_history(priv, hw->x, hw->y, hw->numFingers, hw->millis);
+
+ return delay;
+ }
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/src/synapticsstr.h xserver-xorg-input-synaptics-1.1.2/src/synapticsstr.h
+--- xserver-xorg-input-synaptics-1.1.2.orig/src/synapticsstr.h 2009-06-06 07:05:48.000000000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/src/synapticsstr.h 2009-09-29 18:06:43.334839549 +0200
+@@ -33,6 +33,7 @@
+ typedef struct _SynapticsMoveHist
+ {
+ int x, y;
++ int num_fingers;
+ int millis;
+ } SynapticsMoveHistRec;
+
+diff -Nurp xserver-xorg-input-synaptics-1.1.2.orig/tools/synclient.c xserver-xorg-input-synaptics-1.1.2/tools/synclient.c
+--- xserver-xorg-input-synaptics-1.1.2.orig/tools/synclient.c 2009-09-29 18:05:07.019829000 +0200
++++ xserver-xorg-input-synaptics-1.1.2/tools/synclient.c 2009-09-29 18:06:43.339642879 +0200
+@@ -217,6 +217,8 @@ static struct Parameter params[] = {
+ SYNAPTICS_PROP_AREA, 32, 2),
+ DEFINE_PAR("AreaBottomEdge", area_bottom_edge, PT_INT, 0, 10000,
+ SYNAPTICS_PROP_AREA, 32, 3),
++ DEFINE_PAR("JumpyCursorThreshold", jumpycursor_threshold, PT_INT, 0, 1000,
++ SYNAPTICS_PROP_JUMPYCURSOR_THRESHOLD, 32, 0),
+ { NULL, 0, 0, 0, 0 }
+ };
+
diff --git a/debian/patches/series b/debian/patches/series
index 1e08dfe..f7bf7a3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,7 +2,6 @@
02-do-not-use-synaptics-for-keyboards.patch
103_enable_cornertapping.patch
104_always_enable_tapping.patch
-105_always_enable_multifinger_click.patch
+#105_correct_multifinger_click.patch
106_always_enable_vert_edge_scroll.patch
-107_reduce_cursor_speed.patch
-108_syndaemon_xinput_props.patch
+#114_jumpy_cursor_first_part.patch
commit 1c78953a1ad46c37daee11f81317aeda54c157ef
Author: Cyril Brulebois <kibi@debian.org>
Date: Sat Dec 5 21:27:57 2009 +0100
Upload to experimental.
diff --git a/debian/changelog b/debian/changelog
index 9ed99ed..b6e1619 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,15 @@
-xserver-xorg-input-synaptics (1.2.0-3) UNRELEASED; urgency=low
+xserver-xorg-input-synaptics (1.2.0-3) experimental; urgency=low
+ [ Julien Cristau ]
* Install an udev rule instead of an fdi file on linux.
* Build against xserver 1.7 (closes: #549109).
* Add sh4 and kfreebsd-{amd64,i386} to the arch list (closes: #557881,
#559401).
- -- Julien Cristau <jcristau@debian.org> Thu, 26 Nov 2009 18:55:04 +0100
+ [ Cyril Brulebois ]
+ * Upload to experimental.
+
+ -- Cyril Brulebois <kibi@debian.org> Sat, 05 Dec 2009 21:27:48 +0100
xserver-xorg-input-synaptics (1.2.0-2) unstable; urgency=low
commit 1539344733cf494cf3ff2fd9ff010dfac8267c8a
Author: Julien Cristau <jcristau@debian.org>
Date: Sat Dec 5 12:43:07 2009 +0100
Add bug closer
diff --git a/debian/changelog b/debian/changelog
index b17e40d..9ed99ed 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,7 @@
xserver-xorg-input-synaptics (1.2.0-3) UNRELEASED; urgency=low
* Install an udev rule instead of an fdi file on linux.
- * Build against xserver 1.7.
+ * Build against xserver 1.7 (closes: #549109).
* Add sh4 and kfreebsd-{amd64,i386} to the arch list (closes: #557881,
#559401).
commit 0a415ef9c6d1102d81b3015b18047339d8e1a387
Author: Julien Cristau <jcristau@debian.org>
Date: Sat Dec 5 12:38:44 2009 +0100
Add sh4 and kfreebsd-{amd64,i386} to the arch list (closes: #557881, #559401).
diff --git a/debian/changelog b/debian/changelog
index 4f72d90..b17e40d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,8 @@ xserver-xorg-input-synaptics (1.2.0-3) UNRELEASED; urgency=low
* Install an udev rule instead of an fdi file on linux.
* Build against xserver 1.7.
+ * Add sh4 and kfreebsd-{amd64,i386} to the arch list (closes: #557881,
+ #559401).
-- Julien Cristau <jcristau@debian.org> Thu, 26 Nov 2009 18:55:04 +0100
diff --git a/debian/control b/debian/control
index 84df90d..3a6665f 100644
--- a/debian/control
+++ b/debian/control
@@ -20,7 +20,7 @@ Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-input-synaptics
Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-input-synaptics.git
Package: xserver-xorg-input-synaptics
-Architecture: alpha amd64 arm armeb armel hppa i386 ia64 m68k mips mipsel powerpc sparc
+Architecture: alpha amd64 arm armeb armel hppa i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mips mipsel powerpc sh4 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
commit b06702185f768955598f904816af546f6648d6f7
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Dec 2 17:00:31 2009 +0100
Build against xserver 1.7.
diff --git a/debian/changelog b/debian/changelog
index 370e5ed..4f72d90 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
xserver-xorg-input-synaptics (1.2.0-3) UNRELEASED; urgency=low
* Install an udev rule instead of an fdi file on linux.
+ * Build against xserver 1.7.
-- Julien Cristau <jcristau@debian.org> Thu, 26 Nov 2009 18:55:04 +0100
diff --git a/debian/control b/debian/control
index 58360d4..84df90d 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Build-Depends:
libxext-dev,
libxi-dev (>= 2:1.2.0),
x11proto-core-dev,
- xserver-xorg-dev (>= 2:1.5.99.901),
+ xserver-xorg-dev (>= 2:1.7),
pkg-config,
quilt,
automake,
commit 90b1b3bebc6f3a1da3cec2220a12cfd617bb28d8
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Dec 2 16:59:57 2009 +0100
Wrap build-deps in debian/control
diff --git a/debian/control b/debian/control
index a14aa62..58360d4 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,18 @@ Section: x11
Priority: optional
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Uploaders: Mattia Dongili <malattia@debian.org>
-Build-Depends: debhelper (>= 5.0.0), libx11-dev, libxext-dev, libxi-dev (>= 2:1.2.0), x11proto-core-dev, xserver-xorg-dev (>= 2:1.5.99.901), pkg-config, quilt, automake, libtool, xutils-dev
+Build-Depends:
+ debhelper (>= 5.0.0),
+ libx11-dev,
+ libxext-dev,
+ libxi-dev (>= 2:1.2.0),
+ x11proto-core-dev,
+ xserver-xorg-dev (>= 2:1.5.99.901),
+ pkg-config,
+ quilt,
+ automake,
+ libtool,
Reply to: