.gitignore | 1 Makefile.am | 4 configure.ac | 8 debian/changelog | 24 + debian/patches/101_no_horizscroll.patch | 13 debian/patches/102_dont_check_abi.diff | 44 -- debian/patches/103_enable_cornertapping.patch | 9 debian/patches/104_syndaemon_xinput_props.patch | 338 ----------------- debian/patches/105_no_bcm5974_shmconfig.patch | 12 debian/patches/series | 4 debian/rules | 2 debian/watch | 2 fdi/11-x11-synaptics.fdi | 55 -- include/Makefile.am | 2 man/synaptics.man | 32 + src/alpscomm.c | 2 src/eventcomm.c | 136 ++++--- src/properties.c | 12 src/ps2comm.c | 2 src/psmcomm.c | 2 src/psmcomm.h | 2 src/synaptics.c | 463 +++++++++++++----------- src/synapticsstr.h | 8 src/synproto.h | 2 tools/synclient.c | 6 tools/syndaemon.c | 12 xorg-synaptics.pc.in | 6 27 files changed, 448 insertions(+), 755 deletions(-)
New commits: commit 1916655a8754aae645c16e16a7263dcf00c140f8 Author: Timo Aaltonen <[email protected]> Date: Sat Jan 17 00:05:13 2009 +0200 Update changelog, delete obsolete patches. diff --git a/debian/changelog b/debian/changelog index b510d98..d4cc683 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +xfree86-driver-synaptics (0.99.3-0ubuntu1) UNRELEASED; 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 <[email protected]> Sat, 17 Jan 2009 00:01:59 +0200 + xfree86-driver-synaptics (0.99.3-1) UNRELEASED; urgency=low [ Timo Aaltonen ] diff --git a/debian/patches/101_no_horizscroll.patch b/debian/patches/101_no_horizscroll.patch deleted file mode 100644 index 8ff26af..0000000 --- a/debian/patches/101_no_horizscroll.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: xserver-xorg-input-synaptics/src/synaptics.c -=================================================================== ---- xserver-xorg-input-synaptics.orig/src/synaptics.c 2008-09-29 10:08:18.000000000 +0300 -+++ xserver-xorg-input-synaptics/src/synaptics.c 2008-09-29 10:11:06.000000000 +0300 -@@ -451,7 +449,7 @@ - pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", vertScrollDelta); - pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", TRUE); - pars->special_scroll_area_right = xf86SetBoolOption(opts, "SpecialScrollAreaRight", TRUE); -- pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", TRUE); -+ pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", FALSE); - pars->scroll_edge_corner = xf86SetBoolOption(opts, "CornerCoasting", FALSE); - pars->scroll_twofinger_vert = xf86SetBoolOption(opts, "VertTwoFingerScroll", FALSE); - pars->scroll_twofinger_horiz = xf86SetBoolOption(opts, "HorizTwoFingerScroll", FALSE); diff --git a/debian/patches/102_dont_check_abi.diff b/debian/patches/102_dont_check_abi.diff deleted file mode 100644 index b8a17cc..0000000 --- a/debian/patches/102_dont_check_abi.diff +++ /dev/null @@ -1,44 +0,0 @@ -Index: xserver-xorg-input-synaptics/src/properties.c -=================================================================== ---- xserver-xorg-input-synaptics.orig/src/properties.c 2008-09-29 10:07:16.000000000 +0300 -+++ xserver-xorg-input-synaptics/src/properties.c 2008-09-29 10:12:48.000000000 +0300 -@@ -28,7 +28,6 @@ - #endif - - #include "xf86Module.h" --#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3 - - #include <X11/Xatom.h> - #include <xf86Xinput.h> -@@ -508,5 +507,4 @@ - return TRUE; - } - --#endif - -Index: xserver-xorg-input-synaptics/src/synaptics.c -=================================================================== ---- xserver-xorg-input-synaptics.orig/src/synaptics.c 2008-09-29 10:12:39.000000000 +0300 -+++ xserver-xorg-input-synaptics/src/synaptics.c 2008-09-29 10:13:30.000000000 +0300 -@@ -125,10 +125,8 @@ - static Bool DeviceClose(DeviceIntPtr); - static Bool QueryHardware(LocalDevicePtr); - --#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3 - void InitDeviceProperties(LocalDevicePtr local); - int SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop); --#endif - - InputDriverRec SYNAPTICS = { - 1, -@@ -726,10 +724,8 @@ - if (!alloc_param_data(local)) - return !Success; - --#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3 - InitDeviceProperties(local); - XIRegisterPropertyHandler(local->dev, SetProperty, NULL, NULL); --#endif - - return Success; - } diff --git a/debian/patches/103_enable_cornertapping.patch b/debian/patches/103_enable_cornertapping.patch index 8268cd7..531c9c3 100644 --- a/debian/patches/103_enable_cornertapping.patch +++ b/debian/patches/103_enable_cornertapping.patch @@ -2,15 +2,6 @@ Index: xfree86-driver-synaptics-0.15.2/src/synaptics.c =================================================================== --- xfree86-driver-synaptics-0.15.2.orig/src/synaptics.c 2008-09-10 20:53:29.000000000 +0200 +++ xfree86-driver-synaptics-0.15.2/src/synaptics.c 2008-09-18 18:33:57.000000000 +0200 -@@ -441,7 +441,7 @@ - pars->finger_high = xf86SetIntOption(opts, "FingerHigh", 30); - pars->finger_press = xf86SetIntOption(opts, "FingerPress", 256); - pars->tap_time = xf86SetIntOption(opts, "MaxTapTime", 180); -- pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", 25); -+ pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", 220); - pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180); - pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); - pars->fast_taps = xf86SetIntOption(opts, "FastTaps", FALSE); @@ -470,8 +470,8 @@ pars->guestmouse_off = xf86SetBoolOption(opts, "GuestMouseOff", FALSE); pars->locked_drags = xf86SetBoolOption(opts, "LockedDrags", FALSE); diff --git a/debian/patches/104_syndaemon_xinput_props.patch b/debian/patches/104_syndaemon_xinput_props.patch deleted file mode 100644 index 9a5e682..0000000 --- a/debian/patches/104_syndaemon_xinput_props.patch +++ /dev/null @@ -1,338 +0,0 @@ -Index: xfree86-driver-synaptics-0.15.2/tools/syndaemon.c -=================================================================== ---- xfree86-driver-synaptics-0.15.2.orig/tools/syndaemon.c 2008-10-09 15:03:49.000000000 +1100 -+++ xfree86-driver-synaptics-0.15.2/tools/syndaemon.c 2008-10-09 15:13:29.000000000 +1100 -@@ -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 ([email protected]) -+ * William Grant ([email protected]) - */ - - #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() -+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() -+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: xfree86-driver-synaptics-0.15.2/configure.ac -=================================================================== ---- xfree86-driver-synaptics-0.15.2.orig/configure.ac 2008-10-09 15:13:56.000000000 +1100 -+++ xfree86-driver-synaptics-0.15.2/configure.ac 2008-10-09 15:14:23.000000000 +1100 -@@ -109,7 +109,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/105_no_bcm5974_shmconfig.patch b/debian/patches/105_no_bcm5974_shmconfig.patch deleted file mode 100644 index 85ae592..0000000 --- a/debian/patches/105_no_bcm5974_shmconfig.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: xserver-xorg-input-synaptics/fdi/11-x11-synaptics.fdi -=================================================================== ---- xserver-xorg-input-synaptics.orig/fdi/11-x11-synaptics.fdi 2008-10-13 21:15:54.000000000 +1100 -+++ xserver-xorg-input-synaptics/fdi/11-x11-synaptics.fdi 2008-10-13 21:16:00.000000000 +1100 -@@ -18,7 +18,6 @@ - </match> - <match key="info.product" contains="bcm5974"> - <merge key="input.x11_driver" type="string">synaptics</merge> -- <merge key="input.x11_options.SHMConfig" type="string">true</merge> - <merge key="input.x11_options.LeftEdge" type="string">0</merge> - <merge key="input.x11_options.RightEdge" type="string">1280</merge> - <merge key="input.x11_options.TopEdge" type="string">0</merge> diff --git a/debian/patches/series b/debian/patches/series index a27c73a..66a03f4 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,6 +1,2 @@ 01-synaptics-dont-grab-if-not-on-current-VT.patch -101_no_horizscroll.patch -102_dont_check_abi.diff 103_enable_cornertapping.patch -104_syndaemon_xinput_props.patch -105_no_bcm5974_shmconfig.patch commit fb860330702ede91dbc095d0bd8586bb1a0c8c06 Author: Julien Cristau <[email protected]> Date: Fri Jan 16 05:28:09 2009 +0100 update changelog for new upstream INSTALL is not created by automake, don't delete it diff --git a/debian/changelog b/debian/changelog index f240675..610ca18 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xfree86-driver-synaptics (0.15.0+git20080820-2) UNRELEASED; urgency=low +xfree86-driver-synaptics (0.99.3-1) UNRELEASED; urgency=low [ Timo Aaltonen ] * Run autoreconf at build time; build-depend on automake, libtool and @@ -6,6 +6,7 @@ xfree86-driver-synaptics (0.15.0+git20080820-2) UNRELEASED; urgency=low [ Julien Cristau ] * Add watch file. + * New upstream release. -- Timo Aaltonen <[email protected]> Fri, 05 Sep 2008 10:18:01 +0300 diff --git a/debian/rules b/debian/rules index 8e29b0a..93c5fcc 100755 --- a/debian/rules +++ b/debian/rules @@ -64,7 +64,7 @@ clean: xsfclean 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 INSTALL aclocal.m4 config.h.in + rm -f ltmain.sh missing aclocal.m4 config.h.in dh_clean commit 8ee8aa5ec764c9c816fc95e0bfc5f4e2aee3ba0f Author: Peter Hutterer <[email protected]> Date: Mon Dec 15 09:34:34 2008 +1000 synaptics 1.0 RC3 diff --git a/configure.ac b/configure.ac index 5718987..37bf3a0 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-synaptics], - 0.99.2, + 0.99.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-input-synaptics) commit b3bf47cf8ac5d24e3358c937d7456570378ceb6e Author: Peter Hutterer <[email protected]> Date: Wed Dec 10 09:22:33 2008 +1000 Fix compilation issue (opts undeclared) for XINPUT ABI 0. (#18988) HistorySize is now deprecated for ABI > 0, so list it as a removed option in the man page. X.Org Bug 18988 <http://bugs.freedesktop.org/show_bug.cgi?id=18988> Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Christoph Brill <[email protected]> Signed-off-by: Henrik Rydberg <[email protected]> (cherry picked from commit 8d5cf39e7f37ce78aaec423a9da397d72b1629d2) diff --git a/man/synaptics.man b/man/synaptics.man index 0030680..aaa448c 100644 --- a/man/synaptics.man +++ b/man/synaptics.man @@ -634,6 +634,8 @@ edge scrolling is enabled for both horizontal and vertical scrolling. The following options are no longer part of the driver configuration: .TP .BI "Option \*qRepeater\*q \*q" string \*q +.TP +.BI "Option \*qHistorySize\*q \*q" integer \*q .SH "AUTHORS" .LP diff --git a/src/synaptics.c b/src/synaptics.c index 8ccfb69..664d2fa 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -595,7 +595,7 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags) } #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - local->history_size = xf86SetIntOption(opts, "HistorySize", 0); + local->history_size = xf86SetIntOption(local->options, "HistorySize", 0); #endif xf86ProcessCommonOptions(local, local->options); commit 3db3f4e04c7038477a03b092c55dfd063224f034 Author: Fedor P. Goncharov (Fredy) <[email protected]> Date: Thu Dec 4 17:16:40 2008 +0600 Auto-adjust right_edge for touchpads with hardware scroll area. If RightEdge is specified as a config option, ignore the SpecialScrollArea. Otherwise, adjust right_edge to the bounds of the hardware scroll area. Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Christoph Brill <[email protected]> Signed-off-by: Henrik Rydberg <[email protected]> (cherry picked from commit 0f2802726fe7374afeca7447e3127bc1d7f3247c) diff --git a/man/synaptics.man b/man/synaptics.man index 79958e7..0030680 100644 --- a/man/synaptics.man +++ b/man/synaptics.man @@ -101,7 +101,9 @@ user can access the configuration. X coordinate for left edge. .TP 7 .BI "Option \*qRightEdge\*q \*q" integer \*q -X coordinate for right edge. +X coordinate for right edge. If this option is set, +.BI SpecialScrollAreaRight +is ignored. .TP 7 .BI "Option \*qTopEdge\*q \*q" integer \*q Y coordinate for top edge. @@ -110,9 +112,8 @@ Y coordinate for top edge. Y coordinate for bottom edge. .TP 7 .BI "Option \*qSpecialScrollAreaRight\*q \*q" boolean \*q -Detect special scroll wheel region and set coordinate automaticly (region -must have a very large X coordinate). Disable option if you don't want use -it region. +Some touchpads have a scroll region on the right edge. Disable this option if +you have one but don't want use it as scroll wheel region. .TP 7 .BI "Option \*qFingerLow\*q \*q" integer \*q When finger pressure drops below this value, the driver counts it as a diff --git a/src/synaptics.c b/src/synaptics.c index 6419607..8ccfb69 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -441,7 +441,11 @@ static void set_default_parameters(LocalDevicePtr local) pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", horizScrollDelta); pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", vertScrollDelta); pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", vertEdgeScroll); - pars->special_scroll_area_right = xf86SetBoolOption(opts, "SpecialScrollAreaRight", TRUE); + if (xf86CheckIfOptionUsedByName(opts, "RightEdge")) { + pars->special_scroll_area_right = FALSE; + } 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); @@ -891,7 +895,7 @@ edge_detection(SynapticsPrivate *priv, int x, int y) if (priv->synpara->circular_pad) return circular_edge_detection(priv, x, y); - if (x >= priv->synpara->right_edge) + if (x > priv->synpara->right_edge) edge |= RIGHT_EDGE; else if (x < priv->synpara->left_edge) edge |= LEFT_EDGE; @@ -1970,32 +1974,20 @@ HandleState(LocalDevicePtr local, struct SynapticsHwState *hw) /* * Some touchpads have a scroll wheel region where a very large X - * coordinate is reported. - * - * We suggest two solution this problem: + * coordinate is reported. In this case for eliminate discontinuity, + * we adjust X and simulate new zone which adjacent to right edge. */ if (hw->x <= XMAX_VALID) { if (priv->largest_valid_x < hw->x) priv->largest_valid_x = hw->x; } else { - if (!(para->special_scroll_area_right)) - /* First: - * Adjust the X coordinate to eliminate the discontinuity - * and use it region as 1 coordinate size line. - */ - hw->x = priv->largest_valid_x + 1; - else { - /* Second (default): - * Adjust the X coordinate to eliminate the discontinuity - * and use it region as scroll area automaticly. - */ - - if (priv->synpara->right_edge > priv->largest_valid_x + 1) - priv->synpara->right_edge=priv->largest_valid_x + 1; - para->special_scroll_area_right = FALSE; - hw->x = priv->largest_valid_x + 1; - } + /* + * If user didn't set right_edge manualy, auto-adjust to bounds of + * hardware scroll area. + */ + if (para->special_scroll_area_right) + priv->synpara->right_edge = priv->largest_valid_x; } edge = edge_detection(priv, hw->x, hw->y); commit 8d0767d27e17fcda8a75b993033dfbc1a7cb3720 Author: Benjamin Close <[email protected]> Date: Thu Dec 4 15:59:41 2008 +1030 Use the correct header so psmcomm.h builds again (cherry picked from commit 9e84eb6bd2010176c11022cb8c0af56c6e9d7663) diff --git a/src/psmcomm.h b/src/psmcomm.h index d079a12..07cb528 100644 --- a/src/psmcomm.h +++ b/src/psmcomm.h @@ -24,6 +24,6 @@ #include <unistd.h> #include <sys/ioctl.h> -#include <freebsd/mouse.h> +#include <sys/mouse.h> #endif commit cd71475e96ef4ec4a70ee93099fe4e00c2e44026 Author: Benjamin Close <[email protected]> Date: Thu Dec 4 15:57:03 2008 +1030 Fix typo preventing psmcomm from being enabled on BSD platforms (cherry picked from commit 1131f24a0e592c8db8f4ebe509a1cdc263be545a) diff --git a/configure.ac b/configure.ac index 210168d..5718987 100644 --- a/configure.ac +++ b/configure.ac @@ -66,7 +66,7 @@ AM_CONDITIONAL([BUILD_EVENTCOMM], [test "x${BUILD_EVENTCOMM}" = "xyes"]) if test "x${BUILD_EVENTCOMM}" = "xyes" ; then AC_DEFINE(BUILD_EVENTCOMM, 1, [Optional backend eventcomm enabled]) fi -AM_CONDITIONAL([BUILD_PSMCOMM], [test "x$BUILD_PSMCOMM}" = "xyes"]) +AM_CONDITIONAL([BUILD_PSMCOMM], [test "x${BUILD_PSMCOMM}" = "xyes"]) if test "x${BUILD_PSMCOMM}" = "xyes" ; then AC_DEFINE(BUILD_PSMCOMM, 1, [Optional backend psmcomm enabled]) fi commit 57023ac28ab1fa31cbfb2772cc40733829bc181e Author: Julien Cristau <[email protected]> Date: Thu Dec 4 15:13:46 2008 +0100 Add watch file. diff --git a/debian/changelog b/debian/changelog index 27180fc..f240675 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ xfree86-driver-synaptics (0.15.0+git20080820-2) UNRELEASED; urgency=low + [ Timo Aaltonen ] * Run autoreconf at build time; build-depend on automake, libtool and xutils-dev. + [ Julien Cristau ] + * Add watch file. + -- Timo Aaltonen <[email protected]> Fri, 05 Sep 2008 10:18:01 +0300 xfree86-driver-synaptics (0.15.0+git20080820-1) experimental; urgency=low diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..8cc7324 --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://xorg.freedesktop.org/releases/individual/driver/ xf86-input-synaptics-(.*)\.tar\.gz commit 9dc49e1ec59e5d399853ef45c74b482a268fd134 Author: Peter Hutterer <[email protected]> Date: Thu Dec 4 15:43:39 2008 +1000 synaptics 1.0 RC 2 diff --git a/configure.ac b/configure.ac index 15ebb4a..210168d 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-synaptics], - 0.99.1, + 0.99.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-input-synaptics) commit 8673dc0ad3d0787c18479cbcbd24fd3d1563bba4 Author: Peter Hutterer <[email protected]> Date: Wed Dec 3 21:57:04 2008 +1000 fdi: only match on input.touchpad, not on various product names. We can deal with anything that has absolute x/y and pressure or touch. So don't bother with various product names. If a touchpad doesn't work, fix it then. Suggested by Vojtech Pavlik. Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Christoph Brill <[email protected]> Signed-off-by: Henrik Rydberg <[email protected]> (cherry picked from commit d17231161f9cebc9ba961db0dd948c996e7cc369) diff --git a/fdi/11-x11-synaptics.fdi b/fdi/11-x11-synaptics.fdi index 5614149..4bf9ea0 100644 --- a/fdi/11-x11-synaptics.fdi +++ b/fdi/11-x11-synaptics.fdi @@ -2,14 +2,12 @@ <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.touchpad"> - <match key="info.product" contains_outof="Synaptics TouchPad;AlpsPS/2 ALPS;appletouch;bcm5974"> <merge key="input.x11_driver" type="string">synaptics</merge> - <!-- Arbitrary options can be passed to the driver using - the input.x11_options property since xorg-server-1.5. --> - <!-- EXAMPLE: - <merge key="input.x11_options.LeftEdge" type="string">120</merge> - --> - </match> + <!-- Arbitrary options can be passed to the driver using + the input.x11_options property since xorg-server-1.5. --> + <!-- EXAMPLE: + <merge key="input.x11_options.LeftEdge" type="string">120</merge> + --> </match> </device> </deviceinfo> commit 940a7b1f3e6d04c23a1e5a5e0ccd3ae64c9ea542 Author: Fedor P. Goncharov (Fredy) <[email protected]> Date: Sat Nov 29 01:33:22 2008 +0600 change type of FastTaps option to bool Signed-off-by: Peter Hutterer <[email protected]> (cherry picked from commit 987fb075dba42d9a282bd918985f02cab101d620) diff --git a/src/synaptics.c b/src/synaptics.c index 700cb7c..6419607 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -435,7 +435,7 @@ static void set_default_parameters(LocalDevicePtr local) pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", tapMove); pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180); pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); - pars->fast_taps = xf86SetIntOption(opts, "FastTaps", FALSE); + pars->fast_taps = xf86SetBoolOption(opts, "FastTaps", FALSE); pars->emulate_mid_button_time = xf86SetIntOption(opts, "EmulateMidButtonTime", 75); pars->emulate_twofinger_z = xf86SetIntOption(opts, "EmulateTwoFingerMinZ", emulateTwoFingerMinZ); pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", horizScrollDelta); commit 2a655cf99933855ae17d550b2481c1d2373d3919 Author: Magnus Kessler <[email protected]> Date: Wed Dec 3 10:17:54 2008 +1000 Export synapticsModuleData Mark synapticsModuleData as exported so that it can be used with xorg-server compiled with visibility flags. Signed-off-by: Magnus Kessler <[email protected]> Signed-off-by: Peter Hutterer <[email protected]> (cherry picked from commit 1b941b26db760037965109b5eeeb0e3fb730a805) diff --git a/src/synaptics.c b/src/synaptics.c index 15fb636..700cb7c 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -160,7 +160,11 @@ SetupProc(pointer module, pointer options, int *errmaj, int *errmin) return module; } -XF86ModuleData synapticsModuleData = {&VersionRec, &SetupProc, NULL }; +_X_EXPORT XF86ModuleData synapticsModuleData = { + &VersionRec, + &SetupProc, + NULL +}; /***************************************************************************** commit bfb264eaccdcaab36d11f937c3592cf26241a929 Author: Batchty <[email protected]> Date: Mon Nov 24 11:31:48 2008 +1000 Stop two-finger scrolling if no finger is present. Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Simon Thum <[email protected]> Signed-off-by: Henrik Rydberg <[email protected]> (cherry picked from commit 13c93be34dfcd0e57b14f86688fd2ad4efda028c) diff --git a/src/synaptics.c b/src/synaptics.c index dce2c9c..15fb636 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -1671,7 +1671,7 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw, priv->circ_scroll_on = FALSE; } - if (hw->numFingers < 2) { + if (!finger || hw->numFingers < 2) { if (priv->vert_scroll_twofinger_on) { DBG(7, ErrorF("vert two-finger scroll off\n")); priv->vert_scroll_twofinger_on = FALSE; commit 9c63952313ecd93770d2eee2580aca69bbe94787 Author: Batchty <[email protected]> Date: Sun Nov 23 20:46:14 2008 +0100 Ignore moves during tap processing if no finger is down. The Dell Inspiron 1520 with a Synaptics touchpad loves to send event like these after every finger release : time x y z f w l r u d m multi gl gm gr gdx gdy 1.563 3224 1625 57 1 5 0 0 0 0 0 00000000 0 0 0 0 0 1.574 3251 1632 30 1 5 0 0 0 0 0 00000000 0 0 0 0 0 1.584 3292 1673 10 1 5 0 0 0 0 0 00000000 0 0 0 0 0 1.594 1 5855 3 2 5 0 0 0 0 0 00000000 0 0 0 0 0 1.634 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 1.746 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 1.897 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 Most of the time these events are ignored by the driver, but sometimes it confuses two-finger scrolling and tap detection. For example, in this log, the first tap is recognized, the second isn't : time x y z f w l r u d m multi gl gm gr gdx gdy 11.597 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 11.678 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 11.688 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 11.709 3862 2406 8 1 5 0 0 0 0 0 00000000 0 0 0 0 0 11.719 3851 2464 67 1 5 0 0 0 0 0 00000000 0 0 0 0 0 11.729 3849 2407 35 1 4 0 0 0 0 0 00000000 0 0 0 0 0 11.739 3858 2578 5 1 9 0 0 0 0 0 00000000 0 0 0 0 0 11.749 3858 2578 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 11.850 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 11.860 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 12.073 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.083 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 12.347 1 5855 4 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.357 3844 2381 56 1 4 0 0 0 0 0 00000000 0 0 0 0 0 12.377 3848 2361 32 1 4 0 0 0 0 0 00000000 0 0 0 0 0 12.388 1 5855 3 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.398 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 12.408 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0 12.428 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0 The problem with the second tap is that the driver check if the movement from (3848,2361) to (1,5855) is over TapMaxMove before it checks for a finger release. So the driver considers it as a (short) finger move. Add the condition ''the finger is still present'' to the 'move' condition, so we ignore these moves.. Signed-off-by: Peter Hutterer <[email protected]> Signed-off-by: Simon Thum <[email protected]> Signed-off-by: Henrik Rydberg <[email protected]> (cherry picked from commit 6cbdb0a10574d57a563337adb54afdf89996bc36) -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

