.gitignore | 1 INSTALL | 106 ++++++++ Makefile.am | 4 configure.ac | 8 debian/changelog | 3 debian/rules | 2 fdi/11-x11-synaptics.fdi | 13 - include/Makefile.am | 4 include/synaptics-properties.h | 142 +++++++++++ include/synaptics.h | 1 man/synaptics.man | 39 ++- src/Makefile.am | 3 src/alpscomm.c | 3 src/eventcomm.c | 137 +++++++--- src/properties.c | 522 +++++++++++++++++++++++++++++++++++++++++ src/ps2comm.c | 3 src/psmcomm.c | 3 src/psmcomm.h | 2 src/synaptics.c | 491 +++++++++++++++++++++++++------------- src/synapticsstr.h | 13 - src/synproto.h | 1 tools/synclient.c | 6 tools/syndaemon.c | 21 + xorg-synaptics.pc.in | 6 24 files changed, 1296 insertions(+), 238 deletions(-)
New commits: commit fb860330702ede91dbc095d0bd8586bb1a0c8c06 Author: Julien Cristau <jcris...@debian.org> 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 <tepsipa...@ubuntu.com> 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 <peter.hutte...@who-t.net> 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 <peter.hutte...@who-t.net> 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 <peter.hutte...@who-t.net> Signed-off-by: Christoph Brill <egore...@egore911.de> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> (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) <fe...@gorodok.net> 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 <peter.hutte...@who-t.net> Signed-off-by: Christoph Brill <egore...@egore911.de> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> (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 <benjamin.cl...@clearchain.com> 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 <benjamin.cl...@clearchain.com> 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 9dc49e1ec59e5d399853ef45c74b482a268fd134 Author: Peter Hutterer <peter.hutte...@redhat.com> 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 <peter.hutte...@redhat.com> 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 <peter.hutte...@redhat.com> Signed-off-by: Christoph Brill <egore...@egore911.de> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> (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) <fe...@gorodok.net> Date: Sat Nov 29 01:33:22 2008 +0600 change type of FastTaps option to bool Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> (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 <magnus.kess...@gmx.net> 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 <magnus.kess...@gmx.net> Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> (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 <batch...@free.fr> Date: Mon Nov 24 11:31:48 2008 +1000 Stop two-finger scrolling if no finger is present. Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> Signed-off-by: Simon Thum <eg...@gmx.de> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> (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 <batch...@free.fr> 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 <peter.hutte...@redhat.com> Signed-off-by: Simon Thum <eg...@gmx.de> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> (cherry picked from commit 6cbdb0a10574d57a563337adb54afdf89996bc36) diff --git a/src/synaptics.c b/src/synaptics.c index df29358..dce2c9c 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -1249,7 +1249,7 @@ HandleTapProcessing(SynapticsPrivate *priv, struct SynapticsHwState *hw, release = !finger && priv->finger_state; move = ((priv->tap_max_fingers <= ((priv->horiz_scroll_twofinger_on || priv->vert_scroll_twofinger_on)? 2 : 1)) && ((abs(hw->x - priv->touch_on.x) >= para->tap_move) || - (abs(hw->y - priv->touch_on.y) >= para->tap_move))); + (abs(hw->y - priv->touch_on.y) >= para->tap_move)) && finger); if (touch) { priv->touch_on.x = hw->x; commit 34e200e8dceecd09654d84a1464a6b085b685225 Author: Peter Hutterer <peter.hutte...@redhat.com> Date: Fri Nov 21 16:52:03 2008 +1000 fdi: make use of hal's contains_outof matcher to reduce duplication. Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> Signed-off-by: Christoph Brill <egore...@egore911.de> (cherry picked from commit fbcb056ea5a2fdb178c945098f55ef564e4fa5ac) diff --git a/fdi/11-x11-synaptics.fdi b/fdi/11-x11-synaptics.fdi index 2cc5a5a..5614149 100644 --- a/fdi/11-x11-synaptics.fdi +++ b/fdi/11-x11-synaptics.fdi @@ -2,7 +2,7 @@ <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.touchpad"> - <match key="info.product" contains="Synaptics 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. --> @@ -10,15 +10,6 @@ <merge key="input.x11_options.LeftEdge" type="string">120</merge> --> </match> - <match key="info.product" contains="AlpsPS/2 ALPS"> - <merge key="input.x11_driver" type="string">synaptics</merge> - </match> - <match key="info.product" contains="appletouch"> - <merge key="input.x11_driver" type="string">synaptics</merge> - </match> - <match key="info.product" contains="bcm5974"> - <merge key="input.x11_driver" type="string">synaptics</merge> - </match> </match> </device> </deviceinfo> commit 631e876ba6aa122aa980676c7a70268b4302a02a Author: Peter Hutterer <peter.hutte...@redhat.com> Date: Fri Nov 14 10:46:39 2008 +1000 synaptics 1.0 RC 1 diff --git a/configure.ac b/configure.ac index 69f1041..15ebb4a 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-synaptics], - 0.15.2, + 0.99.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-input-synaptics) commit 72d9bca079f40a705de5059eeea260b289d77e84 Author: Peter Hutterer <peter.hutte...@redhat.com> Date: Tue Nov 11 09:53:17 2008 +1000 Remove ALPS special options treatment. Don't overwrite options set earlier based on a strstr(name, "ALPS"). If anything, the driver should just autoscale to the correct settings anyway. Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> diff --git a/src/eventcomm.c b/src/eventcomm.c index 620f2f3..c917c80 100644 --- a/src/eventcomm.c +++ b/src/eventcomm.c @@ -205,24 +205,6 @@ EventQueryHardware(LocalDevicePtr local, struct SynapticsHwInfo *synhw) xf86Msg(X_PROBED, "%s touchpad found\n", local->name); - /* awful */ - if (strstr(local->name, "ALPS")) { - SynapticsSHM *pars = ((SynapticsPrivate *)local->private)->synpara; - void *opts = local->options; - - pars->left_edge = xf86SetIntOption(opts, "LeftEdge", 120); - pars->right_edge = xf86SetIntOption(opts, "RightEdge", 830); - pars->top_edge = xf86SetIntOption(opts, "TopEdge", 120); - pars->bottom_edge = xf86SetIntOption(opts, "BottomEdge", 650); - pars->finger_low = xf86SetIntOption(opts, "FingerLow", 14); - pars->finger_high = xf86SetIntOption(opts, "FingerHigh", 15); - pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", 110); - pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", 20); - pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", 20); - pars->min_speed = xf86SetRealOption(opts, "MinSpeed", 0.3); - pars->max_speed = xf86SetRealOption(opts, "MaxSpeed", 0.75); - } - return TRUE; } commit 471552a62e0e5ba2a274196aef62d984b83f30e6 Author: Henrik Rydberg <rydb...@euromail.se> Date: Tue Oct 28 21:57:02 2008 +0100 Only respect MaxTapMove when appropriate Only respect MaxTapMove with one or two fingers, and the latter only when two-finger scrolling is enabled. (LP: #270002) Original-Author: William Grant <william.gr...@ubuntu.org.au> Signed-off-by: Henrik Rydberg <rydb...@euromail.se> Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> diff --git a/src/synaptics.c b/src/synaptics.c index c3db2be..df29358 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -1247,7 +1247,8 @@ HandleTapProcessing(SynapticsPrivate *priv, struct SynapticsHwState *hw, touch = finger && !priv->finger_state; release = !finger && priv->finger_state; - move = (((abs(hw->x - priv->touch_on.x) >= para->tap_move) || + move = ((priv->tap_max_fingers <= ((priv->horiz_scroll_twofinger_on || priv->vert_scroll_twofinger_on)? 2 : 1)) && + ((abs(hw->x - priv->touch_on.x) >= para->tap_move) || (abs(hw->y - priv->touch_on.y) >= para->tap_move))); if (touch) { commit 629e7345dc40c1eb0acf8a69c267711d35d4f3e3 Author: Christoph Brill <egore...@egore911.de> Date: Thu Oct 30 23:43:13 2008 +0100 Revert "[syndaemon] use Xrecord extension in syndaemon to avoid polling." This reverts commit 641b26da531b38313ecc68badac1a3ccfd6fc7af. As requested by Peter Hutterer and Henrik Rydberg. diff --git a/configure.ac b/configure.ac index 23c9f26..69f1041 100644 --- a/configure.ac +++ b/configure.ac @@ -22,9 +22,9 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-synaptics], - 0.15.2, - [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], - xf86-input-synaptics) + 0.15.2, + [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], + xf86-input-synaptics) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_AUX_DIR(.) @@ -90,10 +90,10 @@ fi #fi AC_ARG_WITH(xorg-module-dir, - AC_HELP_STRING([--with-xorg-module-dir=DIR], - [Default xorg module directory [[default=$libdir/xorg/modules]]]), - [moduledir="$withval"], - [moduledir="$libdir/xorg/modules"]) + AC_HELP_STRING([--with-xorg-module-dir=DIR], + [Default xorg module directory [[default=$libdir/xorg/modules]]]), + [moduledir="$withval"], + [moduledir="$libdir/xorg/modules"]) inputdir=${moduledir}/input AC_SUBST(inputdir) @@ -111,7 +111,6 @@ AC_SUBST([CFLAGS]) # Checks for libraries. PKG_CHECK_MODULES(XLIB, x11) # needed for syndaemon -PKG_CHECK_MODULES(XRECORD, xtst, AC_DEFINE([HAVE_XRECORD],[],[Use XRecord]), true) # Checks for header files. AC_HEADER_STDC @@ -120,9 +119,9 @@ XORG_MANPAGE_SECTIONS XORG_RELEASE_VERSION AC_OUTPUT([Makefile - src/Makefile - man/Makefile - tools/Makefile - fdi/Makefile - include/Makefile - xorg-synaptics.pc]) + src/Makefile + man/Makefile + tools/Makefile + fdi/Makefile + include/Makefile + xorg-synaptics.pc]) diff --git a/tools/Makefile.am b/tools/Makefile.am index 2f2199b..a83da60 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -28,4 +28,4 @@ synclient_SOURCES = synclient.c synclient_LDFLAGS = -lm syndaemon_SOURCES = syndaemon.c -syndaemon_LDFLAGS = $(XLIB_LIBS) $(XRECORD_LIBS) +syndaemon_LDFLAGS = $(XLIB_LIBS) diff --git a/tools/syndaemon.c b/tools/syndaemon.c index d4cfd4c..7aa8238 100644 --- a/tools/syndaemon.c +++ b/tools/syndaemon.c @@ -29,9 +29,6 @@ #endif #include <X11/Xlib.h> -#include <X11/Xproto.h> -#include <X11/extensions/record.h> - #include <stdio.h> #include <stdlib.h> #include <sys/types.h> @@ -48,7 +45,6 @@ static SynapticsSHM *synshm; static int pad_disabled; static int disable_taps_only; static int ignore_modifier_combos; -static int ignore_modifier_keys = 0; static int background; static const char *pid_file; @@ -68,7 +64,6 @@ usage(void) 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, " -R Don't use the XRecord extension.\n"); exit(1); } @@ -171,7 +166,7 @@ touchpad_buttons_active(void) if (synshm->multi[i]) return 1; if (synshm->guest_left || synshm->guest_mid || synshm->guest_right) - return 1; + return 1; return 0; } @@ -248,194 +243,6 @@ setup_keyboard_mask(Display *display, int ignore_modifier_keys) } } -/* ---- the following code is for using the xrecord extension ----- */ -#ifdef HAVE_XRECORD - -#define MAX_MODIFIERS 16 - -/* used for exchanging information with the callback function */ -struct xrecord_callback_results { - XModifierKeymap *modifiers; - Bool key_event; - Bool non_modifier_event; - KeyCode pressed_modifiers[MAX_MODIFIERS]; -}; - -/* test if the xrecord extension is found */ -Bool check_xrecord(Display *display) { - - Bool found; - Status status; - int major_opcode, minor_opcode, first_error; - int version[2]; - - found = XQueryExtension(display, - "RECORD", - &major_opcode, - &minor_opcode, - &first_error); - - status = XRecordQueryVersion(display, version, version+1); - if (!background && status) { - printf("X RECORD extension version %d.%d\n", version[0], version[1]); - } - return found; -} - -/* called by XRecordProcessReplies() */ -void xrecord_callback( XPointer closure, XRecordInterceptData* recorded_data) { - - struct xrecord_callback_results *cbres; - xEvent *xev; - int nxev; - - cbres = (struct xrecord_callback_results *)closure; - /*printf("something happend, category=%d\n", recorded_data->category); */ - - if (recorded_data->category != XRecordFromServer) { - XRecordFreeData(recorded_data); - return; - } - - nxev = recorded_data->data_len / 8; - xev = (xEvent *)recorded_data->data; - while(nxev--) { - - if ( (xev->u.u.type == KeyPress) || (xev->u.u.type == KeyRelease)) { - int i; - int is_modifier = 0; - - cbres->key_event = 1; /* remember, a key was pressed. */ - - /* test if it was a modifier */ - for (i = 0; i < 8 * cbres->modifiers->max_keypermod; i++) { - KeyCode kc = cbres->modifiers->modifiermap[i]; - - if (kc == xev->u.u.detail) { - is_modifier = 1; /* yes, it is a modifier. */ - break; - } - } - - if (is_modifier) { - if (xev->u.u.type == KeyPress) { - for (i=0; i < MAX_MODIFIERS; ++i) - if (!cbres->pressed_modifiers[i]) { - cbres->pressed_modifiers[i] = xev->u.u.detail; - break; - } - } else { /* KeyRelease */ - for (i=0; i < MAX_MODIFIERS; ++i) - if (cbres->pressed_modifiers[i] == xev->u.u.detail) - cbres->pressed_modifiers[i] = 0; - } - - } else { - /* remember, a non-modifier was pressed. */ - cbres->non_modifier_event = 1; - } - } - - xev++; - } - - XRecordFreeData(recorded_data); /* cleanup */ -} - -static int is_modifier_pressed(const struct xrecord_callback_results *cbres) { - int i; - - for (i = 0; i < MAX_MODIFIERS; ++i) - if (cbres->pressed_modifiers[i]) - return 1; - - return 0; -} - -void record_main_loop(Display* display, double idle_time) { - - struct xrecord_callback_results cbres; - XRecordContext context; - XRecordClientSpec cspec = XRecordAllClients; - Display *dpy_data; - XRecordRange *range; - int i; - - pad_disabled = 0; - - dpy_data = XOpenDisplay(NULL); /* we need an additional data connection. */ - range = XRecordAllocRange(); - - range->device_events.first = KeyPress; - range->device_events.last = KeyRelease; - - context = XRecordCreateContext(dpy_data, 0, - &cspec,1, - &range, 1); - - XRecordEnableContextAsync(dpy_data, context, xrecord_callback, (XPointer)&cbres); - - cbres.modifiers = XGetModifierMapping(display); - /* clear list of modifiers */ - for (i = 0; i < MAX_MODIFIERS; ++i) - cbres.pressed_modifiers[i] = 0; - - while (1) { - - int fd = ConnectionNumber(dpy_data); - fd_set read_fds; - int ret; - int disable_event = 0; - struct timeval timeout; - - FD_ZERO(&read_fds); - FD_SET(fd, &read_fds); - - ret = select(fd+1, &read_fds, NULL, NULL, - pad_disabled ? &timeout : NULL /* timeout only required for enabling */ ); - - if (FD_ISSET(fd, &read_fds)) { - - cbres.key_event = 0; - cbres.non_modifier_event = 0; - - XRecordProcessReplies(dpy_data); - - if (!ignore_modifier_keys && cbres.key_event) { - disable_event = 1; - } - - if (cbres.non_modifier_event && - !(ignore_modifier_combos && is_modifier_pressed(&cbres)) ) { - disable_event = 1; - } - } - - if (disable_event) { - /* adjust the enable_time */ - timeout.tv_sec = (int)idle_time; - timeout.tv_usec = (idle_time-(double)timeout.tv_sec) * 100000.; - - if (!pad_disabled) { - pad_disabled=1; - if (!background) printf("disable touchpad\n"); - - if (!synshm->touchpad_off) - synshm->touchpad_off = disable_taps_only ? 2 : 1; - } - } - - if (ret == 0 && pad_disabled) { /* timeout => enable event */ - enable_touchpad(); - if (!background) printf("enable touchpad\n"); - } - - } /* end while(1) */ - - XFreeModifiermap(cbres.modifiers); -} -#endif // HAVE_XRECORD - int main(int argc, char *argv[]) { @@ -444,11 +251,10 @@ main(int argc, char *argv[]) Display *display; int c; int shmid; - int use_xrecord = 1; - + int ignore_modifier_keys = 0; /* Parse command line parameters */ - while ((c = getopt(argc, argv, "i:m:dtp:kKR?")) != EOF) { + while ((c = getopt(argc, argv, "i:m:dtp:kK?")) != EOF) { switch(c) { case 'i': idle_time = atof(optarg); @@ -472,9 +278,6 @@ main(int argc, char *argv[]) ignore_modifier_combos = 1; ignore_modifier_keys = 1; break; - case 'R': - use_xrecord = 0; - break; default: usage(); break; @@ -530,16 +333,11 @@ main(int argc, char *argv[]) fclose(fd); } } -#ifdef HAVE_XRECORD - if (use_xrecord && check_xrecord(display)) { - record_main_loop(display, idle_time); - } else -#endif HAVE_XRECORD - { - setup_keyboard_mask(display, ignore_modifier_keys); - - /* Run the main loop */ - main_loop(display, idle_time, poll_delay); - } + + setup_keyboard_mask(display, ignore_modifier_keys); + + /* Run the main loop */ + main_loop(display, idle_time, poll_delay); + return 0; } commit e52a031ac79350e7ff3a9aeb2db4c2ae2d6a8059 Author: Christoph Brill <egore...@egore911.de> Date: Thu Oct 30 23:42:44 2008 +0100 Revert "[syndaemon] switch over to input properties" This reverts commit 934bc0012f948c52aadc8eda912f7728fb7394a2. As requested by Peter Hutterer. diff --git a/configure.ac b/configure.ac index 5727881..23c9f26 100644 --- a/configure.ac +++ b/configure.ac @@ -110,7 +110,7 @@ CFLAGS="$CFLAGS $XORG_CFLAGS "' -I$(top_srcdir)/src' AC_SUBST([CFLAGS]) # Checks for libraries. -PKG_CHECK_MODULES(XLIB, x11 xi) # needed for syndaemon +PKG_CHECK_MODULES(XLIB, x11) # needed for syndaemon PKG_CHECK_MODULES(XRECORD, xtst, AC_DEFINE([HAVE_XRECORD],[],[Use XRecord]), true) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org