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 <tjaal...@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 <tjaal...@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 <malat...@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.mil...@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.mil...@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.langa...@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.mil...@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.mil...@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.mil...@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) <sarv...@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 <jcris...@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.mil...@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) <albertomil...@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) <albertomil...@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 (pete...@telia.com) -+ * William Grant (wgr...@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 <k...@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 <jcris...@debian.org> Thu, 26 Nov 2009 18:55:04 +0100 + [ Cyril Brulebois ] + * Upload to experimental. + + -- Cyril Brulebois <k...@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 <jcris...@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 <jcris...@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 <jcris...@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 <jcris...@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 <jcris...@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 <jcris...@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 <malat...@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, -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org