Hello community,
here is the log from the commit of package x11-input-synaptics
checked in at Mon Jun 5 18:38:33 CEST 2006.
--------
--- x11-input-synaptics/x11-input-synaptics.changes 2006-02-18 00:25:50.000000000 +0100
+++ x11-input-synaptics/x11-input-synaptics.changes 2006-06-04 23:10:28.000000000 +0200
@@ -1,0 +2,14 @@
+Sun Jun 4 23:07:56 CEST 2006 - sndirsch@suse.de
+
+- updated synaptics driver to release 0.14.4
+ * Added PREFIX support to the Makefile. From Ricardo Garcia.
+ * Implemented pressure dependent motion speed. From Stephane Rosi.
+ * Minor documentation updates.
+ * Implemented two-finger vertical and horizontal scrolling. From
+ Stefan Bethge.
+ * Some code cleanup.
+ * Makefile support for Xorg 7.0. From Mattia Dongili.
+ * Added new parameter "SingleTapTimeout" to give greater control over
+ tap behavior. From Vaclav Kadlcik.
+
+-------------------------------------------------------------------
Old:
----
synaptics-0.14.4.diff
synaptics-0.14.4.tar.bz2
New:
----
synaptics-0.14.5.diff
synaptics-0.14.5.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ x11-input-synaptics.spec ++++++
--- /var/tmp/diff_new_pack.OsE1qe/_old 2006-06-05 18:38:09.000000000 +0200
+++ /var/tmp/diff_new_pack.OsE1qe/_new 2006-06-05 18:38:09.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package x11-input-synaptics (Version 0.14.4)
+# spec file for package x11-input-synaptics (Version 0.14.5)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -19,9 +19,9 @@
License: GPL
Group: System/X11/Servers/XF86_4
Autoreqprov: on
-%define driver_release 0.14.4
-Version: 0.14.4
-Release: 4
+%define driver_release 0.14.5
+Version: 0.14.5
+Release: 1
Summary: X11 input module for synaptics touchpad
Provides: xorg-x11-server:/usr/X11R6/%{_lib}/modules/input/synaptics_drv.o
Source: synaptics-%{version}.tar.bz2
@@ -64,7 +64,7 @@
Group: System/X11/Servers/XF86_4
Autoreqprov: on
Version: 031126
-Release: 18
+Release: 29
%description -n x11-input-gunze
X11 input module for gunze touchscreen
@@ -82,7 +82,7 @@
Requires: x11-input-gunze = %{version}-%{release}
Autoreqprov: on
Version: 031126
-Release: 18
+Release: 29
%description -n x11-input-gunze-tools
Tools to configure and calibrate gunze X11 input driver.
@@ -183,6 +183,17 @@
/usr/X11R6/bin/gunzets_calib
%changelog -n x11-input-synaptics
+* Sun Jun 04 2006 - sndirsch@suse.de
+- updated synaptics driver to release 0.14.4
+ * Added PREFIX support to the Makefile. From Ricardo Garcia.
+ * Implemented pressure dependent motion speed. From Stephane Rosi.
+ * Minor documentation updates.
+ * Implemented two-finger vertical and horizontal scrolling. From
+ Stefan Bethge.
+ * Some code cleanup.
+ * Makefile support for Xorg 7.0. From Mattia Dongili.
+ * Added new parameter "SingleTapTimeout" to give greater control over
+ tap behavior. From Vaclav Kadlcik.
* Sat Feb 18 2006 - schwab@suse.de
- Fix last change.
* Fri Feb 17 2006 - sndirsch@suse.de
++++++ synaptics-0.14.4.diff -> synaptics-0.14.5.diff ++++++
++++++ synaptics-0.14.4.tar.bz2 -> synaptics-0.14.5.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/COMPATIBILITY new/synaptics-0.14.5/COMPATIBILITY
--- old/synaptics-0.14.4/COMPATIBILITY 2005-11-05 20:03:17.000000000 +0100
+++ new/synaptics-0.14.5/COMPATIBILITY 2006-05-14 18:20:34.000000000 +0200
@@ -1,4 +1,5 @@
Acer 661 LCi
+Acer 8104 WLMi
Acer Aspire 1353LC
Acer Aspire 1353XC
Acer Aspire 1511 LMi
@@ -8,11 +9,13 @@
Acer Aspire 2010
Acer Aspire 2020
Acer Aspire 3003WLMi
+Acer Aspire 3023
Acer Extensa 3001 WLMi
Acer Ferrari 3000LMi
Acer Ferrari 3200
Acer TravelMate 210TEV
Acer TravelMate 220
+Acer TravelMate 2310
Acer TravelMate 234LC
Acer TravelMate 244LM
Acer TravelMate 2501LC
@@ -38,7 +41,10 @@
Aristo Smart 300
ASUS A1000
ASUS A2500
+ASUS A3500L
ASUS A6000G
+ASUS A6Km-Q010H
+ASUS A6VA
ASUS B1500
ASUS Degatto D1
ASUS L2000B
@@ -55,6 +61,7 @@
ASUS M6700N
ASUS S1300
ASUS S5200N
+ASUS Z71V
BenQ JoyBook 2100E
Clevo 5600P
Clevo M375C
@@ -167,6 +174,8 @@
Gericom Webgine
Gericom X5
Gericom X5 Force
+HP Compaq NC6000
+HP Compaq nw8240
HP Compaq NX6110
HP Compaq NX6120
HP Compaq NX7000
@@ -187,6 +196,7 @@
HP Pavilion N3250
HP Pavilion N3350
HP Pavilion ZD7000
+HP Pavilion ZD8000
HP Pavilion ZE4101
HP Pavilion ZE4125
HP Pavilion ZE4420us
@@ -204,6 +214,7 @@
IBM ThinkPad T41
IBM ThinkPad T42
INote 88EPS
+IPC Powernote S
Jewel Saffier 1500
LG LM50
Los Alamos LUP4SA2
@@ -229,6 +240,7 @@
Samsung GT8800DXV
Samsung P30
Samsung Q10
+Samsung Q20
Samsung V20
Samsung X20
Sharp Actius MM10
@@ -256,6 +268,7 @@
Toshiba A25 (ALPS touchpad)
Toshiba EX1/524CDET (ALPS touchpad)
Toshiba Portege A100
+Toshiba Portege 2000 (ALPS touchpad)
Toshiba Portege 3500 (ALPS touchpad)
Toshiba Qosmio E-15 (ALPS touchpad)
Toshiba Satellite 1130-Z23 (ALPS touchpad)
@@ -267,6 +280,7 @@
Toshiba Satellite A50-543 (ALPS touchpad)
Toshiba Satellite A75-S209 (ALPS touchpad)
Toshiba Satellite M30
+Toshiba Satellite P25-607
Toshiba Satellite Pro 2100 (ALPS touchpad)
Toshiba Tecra A3 (ALPS touchpad)
Toshiba Tecra A4
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/Makefile new/synaptics-0.14.5/Makefile
--- old/synaptics-0.14.4/Makefile 2005-11-06 16:29:18.000000000 +0100
+++ new/synaptics-0.14.5/Makefile 2006-06-04 01:56:58.000000000 +0200
@@ -1,16 +1,15 @@
VER_LEVEL_1=0
VER_LEVEL_2=14
-VER_LEVEL_3=4
+VER_LEVEL_3=5
VERSION=$(VER_LEVEL_1).$(VER_LEVEL_2).$(VER_LEVEL_3)
VERSION_ID=($(VER_LEVEL_1)*10000+$(VER_LEVEL_2)*100+$(VER_LEVEL_3))
# Define the TOP variable to build using include files from a local source tree.
#TOP = /usr/src/redhat/BUILD/XFree86-4.3.0/xc
-INSTALLED_X = $(DESTDIR)/usr/X11R6
-LOCAL_X = Xincludes/usr/X11R6
-BINDIR = $(DESTDIR)/usr/local/bin
-MANDIR = $(DESTDIR)/usr/local/man
+PREFIX ?= /usr/local
+BINDIR = $(DESTDIR)$(PREFIX)/bin
+MANDIR = $(DESTDIR)$(PREFIX)/man
ifeq ($(ARCH),)
ARCH = $(shell /bin/arch)
@@ -26,30 +25,49 @@
LIBDIR = lib
endif
-ifeq ($(TOP),)
- # This hack attempts to check if the needed XFree86 header files are installed.
- # It checks for a needed XFree86 4.3.00 SDK header file that is not installed by
- # default. If it is present, then it assumes that all header files are present.
- # If it is not present, then it assumes that all header files are not present
- # and uses the local copy of the XFree86 4.2.0 header files.
- X_INCLUDES_ROOT = $(shell \
- if [ -f $(INSTALLED_X)/$(LIBDIR)/Server/include/xisb.h ] ; then \
- echo -n $(INSTALLED_X) ; \
- else \
- echo -n $(LOCAL_X) ; \
- fi )
- ALLINCLUDES = -I. -I$(X_INCLUDES_ROOT)/include/X11 \
- -I$(X_INCLUDES_ROOT)/include/X11/extensions \
- -I$(X_INCLUDES_ROOT)/$(LIBDIR)/Server/include
+BUILD_MODULAR ?= $(shell pkg-config xorg-server --exists && echo y)
+ifeq ($(BUILD_MODULAR),y)
+ # Xorg 7.0 uses /usr/lib/xorg/modules and builds stripped shared objects
+ INSTALLED_X = $(DESTDIR)$(shell pkg-config xorg-server --variable=prefix)
+ INPUT_MODULE_DIR = $(DESTDIR)$(shell pkg-config xorg-server --variable=moduledir)/input
+ SYNAPTICS_DRV = synaptics_drv.so
+ LDCOMBINEFLAGS = -shared
+ X_INCLUDES_ROOT = $(INSTALLED_X)
+ SDKDIR = $(shell pkg-config xorg-server --variable=sdkdir)
+ ALLINCLUDES = -I. -I$(INSTALLED_X)/include/X11 \
+ -I$(INSTALLED_X)/include/X11/extensions \
+ -I$(SDKDIR)
else
- SERVERSRC = $(TOP)/programs/Xserver
- ALLINCLUDES = -I. \
+ INSTALLED_X = $(DESTDIR)/usr/X11R6
+ INPUT_MODULE_DIR = $(INSTALLED_X)/$(LIBDIR)/modules/input
+ SYNAPTICS_DRV = synaptics_drv.o
+ LDCOMBINEFLAGS = -r
+
+ ifeq ($(TOP),)
+ # This hack attempts to check if the needed XFree86 header files are installed.
+ # It checks for a needed XFree86 4.3.00 SDK header file that is not installed by
+ # default. If it is present, then it assumes that all header files are present.
+ # If it is not present, then it assumes that all header files are not present
+ # and uses the local copy of the XFree86 4.2.0 header files.
+ X_INCLUDES_ROOT = $(shell \
+ if [ -f $(INSTALLED_X)/$(LIBDIR)/Server/include/xisb.h ] ; then \
+ echo -n $(INSTALLED_X) ; \
+ else \
+ echo -n Xincludes/usr/X11R6 ; \
+ fi )
+ ALLINCLUDES = -I. -I$(X_INCLUDES_ROOT)/include/X11 \
+ -I$(X_INCLUDES_ROOT)/include/X11/extensions \
+ -I$(X_INCLUDES_ROOT)/$(LIBDIR)/Server/include
+ else
+ SERVERSRC = $(TOP)/programs/Xserver
+ ALLINCLUDES = -I. \
-I$(SERVERSRC)/hw/xfree86/common \
-I$(SERVERSRC)/hw/xfree86/os-support \
-I$(SERVERSRC)/mi \
-I$(SERVERSRC)/include \
-I$(TOP)/include
- X_INCLUDES_ROOT = $(TOP)
+ X_INCLUDES_ROOT = $(TOP)
+ endif
endif
MODULE_DEFINES = -DIN_MODULE -DXFree86Module
@@ -62,15 +80,12 @@
CCOPTIONS := -pedantic -Wall -Wpointer-arith
CCOPTIONS += $(call check_gcc,-fno-merge-constants,)
-CCOPTIONS += $(call check_gcc,-fno-pic,)
CDEBUGFLAGS = -O2
CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES) -DVERSION="\"$(VERSION)\"" -DVERSION_ID="$(VERSION_ID)"
CFLAGSCLIENT = $(CDEBUGFLAGS) $(CCOPTIONS) -DVERSION="\"$(VERSION)\"" -DVERSION_ID="$(VERSION_ID)" -I$(X_INCLUDES_ROOT)/include
CC = gcc
-LDCOMBINEFLAGS = -r
-
SRCS = synaptics.c ps2comm.c eventcomm.c psmcomm.c alpscomm.c
OBJS = synaptics.o ps2comm.o eventcomm.o psmcomm.o alpscomm.o
@@ -78,9 +93,9 @@
$(RM) $@
$(CC) -c $(CFLAGS) $(_NOOP_) $*.c
-all:: synaptics_drv.o synclient syndaemon
+all:: $(SYNAPTICS_DRV) synclient syndaemon
-install: $(BINDIR)/synclient $(BINDIR)/syndaemon $(INSTALLED_X)/$(LIBDIR)/modules/input/synaptics_drv.o install-man
+install: $(BINDIR)/synclient $(BINDIR)/syndaemon $(INPUT_MODULE_DIR)/$(SYNAPTICS_DRV) install-man
install-man: $(MANDIR)/man1/synclient.1 $(MANDIR)/man1/syndaemon.1 $(MANDIR)/man5/synaptics.5
@@ -99,10 +114,10 @@
$(BINDIR)/syndaemon : syndaemon
install -D $< $@
-$(INSTALLED_X)/$(LIBDIR)/modules/input/synaptics_drv.o : synaptics_drv.o
+$(INPUT_MODULE_DIR)/$(SYNAPTICS_DRV) : $(SYNAPTICS_DRV)
install --mode=0644 -D $< $@
-synaptics_drv.o: $(OBJS)
+$(SYNAPTICS_DRV): $(OBJS)
$(RM) $@
$(LD) $(LDCOMBINEFLAGS) $(OBJS) -o $@
@@ -127,7 +142,7 @@
syndaemon.o : synaptics.h
clean::
- $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut synclient syndaemon "#"* manpages/*~ synaptics-$(VERSION).tar.bz2
+ $(RM) *.CKP *.ln *.BAK *.bak *.o *.so core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut synclient syndaemon "#"* manpages/*~ synaptics-$(VERSION).tar.bz2
tags::
etags -o TAGS *.c *.h
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/NEWS new/synaptics-0.14.5/NEWS
--- old/synaptics-0.14.4/NEWS 2005-11-06 16:33:55.000000000 +0100
+++ new/synaptics-0.14.5/NEWS 2006-06-04 01:56:58.000000000 +0200
@@ -1,3 +1,14 @@
+0.14.5 (2006-06-04)
+- Added PREFIX support to the Makefile. From Ricardo Garcia.
+- Implemented pressure dependent motion speed. From Stephane Rosi.
+- Minor documentation updates.
+- Implemented two-finger vertical and horizontal scrolling. From
+ Stefan Bethge.
+- Some code cleanup.
+- Makefile support for Xorg 7.0. From Mattia Dongili.
+- Added new parameter "SingleTapTimeout" to give greater control over
+ tap behavior. From Vaclav Kadlcik.
+
0.14.4 (2005-11-06)
- X header file fix for xorg 6.8.99.15. Patch from Christoph Brill.
- Fixed some long vs int inconsistencies to make the driver work
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/README new/synaptics-0.14.5/README
--- old/synaptics-0.14.4/README 2005-08-07 21:44:04.000000000 +0200
+++ new/synaptics-0.14.5/README 2006-06-04 01:30:00.000000000 +0200
@@ -27,6 +27,7 @@
- Multifinger taps: two finger for middle button and three finger
for right button events. (Needs hardware support. Not all models
implement this feature.)
+- Pressure dependent motion speed.
- Run-time configuration using shared memory. This means you can
change parameter settings without restarting the X server.
@@ -154,6 +155,10 @@
You can use the "xev" program to check if the synaptics driver
generates the horizontal scroll events.
+ If you are having problems with Mozilla, try this link:
+
+ http://lists.debian.org/debian-laptop/2004/08/msg00167.html
+
* Can the driver be used together with gpm?
No, not reliably, if you are using a 2.4.x kernel. The gpm driver
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/Xincludes/usr/X11R6/include/X11/Xfuncproto.h.orig new/synaptics-0.14.5/Xincludes/usr/X11R6/include/X11/Xfuncproto.h.orig
--- old/synaptics-0.14.4/Xincludes/usr/X11R6/include/X11/Xfuncproto.h.orig 2005-09-18 18:43:25.000000000 +0200
+++ new/synaptics-0.14.5/Xincludes/usr/X11R6/include/X11/Xfuncproto.h.orig 1970-01-01 01:00:00.000000000 +0100
@@ -1,72 +0,0 @@
-/* $Xorg: Xfuncproto.h,v 1.4 2001/02/09 02:03:22 xorgcvs Exp $ */
-/*
- *
-Copyright 1989, 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- */
-/* $XFree86: xc/include/Xfuncproto.h,v 3.4 2001/12/14 19:53:25 dawes Exp $ */
-
-/* Definitions to make function prototypes manageable */
-
-#ifndef _XFUNCPROTO_H_
-#define _XFUNCPROTO_H_
-
-#ifndef NeedFunctionPrototypes
-#define NeedFunctionPrototypes 1
-#endif /* NeedFunctionPrototypes */
-
-#ifndef NeedVarargsPrototypes
-#define NeedVarargsPrototypes 1
-#endif /* NeedVarargsPrototypes */
-
-#if NeedFunctionPrototypes
-
-#ifndef NeedNestedPrototypes
-#define NeedNestedPrototypes 1
-#endif /* NeedNestedPrototypes */
-
-#ifndef _Xconst
-#define _Xconst const
-#endif /* _Xconst */
-
-#ifndef NeedWidePrototypes
-#ifdef NARROWPROTO
-#define NeedWidePrototypes 0
-#else
-#define NeedWidePrototypes 1 /* default to make interropt. easier */
-#endif
-#endif /* NeedWidePrototypes */
-
-#endif /* NeedFunctionPrototypes */
-
-#ifndef _XFUNCPROTOBEGIN
-#if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
-#define _XFUNCPROTOBEGIN extern "C" { /* do not leave open across includes */
-#define _XFUNCPROTOEND }
-#else
-#define _XFUNCPROTOBEGIN
-#define _XFUNCPROTOEND
-#endif
-#endif /* _XFUNCPROTOBEGIN */
-
-#endif /* _XFUNCPROTO_H_ */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/docs/tapndrag.dia new/synaptics-0.14.5/docs/tapndrag.dia
--- old/synaptics-0.14.4/docs/tapndrag.dia 2005-08-07 21:44:04.000000000 +0200
+++ new/synaptics-0.14.5/docs/tapndrag.dia 2006-05-07 23:31:58.000000000 +0200
@@ -590,6 +590,7 @@
TO : Tap Timeout
TO2: Mouse click timeout
TO3: Double tap timeout
+TO4: Single tap timeout
M : Finger movement
[U]: Generate button up event
[D]: Generate button down event
@@ -1349,7 +1350,7 @@
- dia:string#TO
+ dia:string#TO4
[U] if F
[D] if !F#
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/manpages/synaptics.5 new/synaptics-0.14.5/manpages/synaptics.5
--- old/synaptics-0.14.4/manpages/synaptics.5 2005-11-06 16:29:34.000000000 +0100
+++ new/synaptics-0.14.5/manpages/synaptics.5 2006-06-04 01:56:58.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "synaptics" "5" "0.14.4" "" ""
+.TH "synaptics" "5" "0.14.5" "" ""
.SH "NAME"
.LP
synaptics - Synaptics touchpad driver for XOrg/XFree86.
@@ -32,8 +32,8 @@
Horizontal scrolling (button six and seven events) through moving the
finger on the lower side of the touchpad.
.IP \(bu 4
-The multi-buttons send button four/five events, and six/seven events
-for horizontal scrolling.
+The multi-buttons send button four/five events for vertical scrolling
+and button six/seven events for horizontal scrolling.
.IP \(bu 4
Adjustable finger detection.
.IP \(bu 4
@@ -44,6 +44,8 @@
.
Not all models implement this feature.)
.IP \(bu 4
+Pressure dependent motion speed.
+.IP \(bu 4
Run-time configuration using shared memory. This means you can change
parameter settings without restarting the X server.
.LP
@@ -117,6 +119,20 @@
Makes the driver react faster to a single tap, but also makes double
clicks caused by double tapping slower.
.TP
+\fBVertEdgeScroll\fR (Bool)
+Enable vertical scrolling when dragging along the right edge.
+.TP
+\fBHorizEdgeScroll\fR (Bool)
+Enable horizontal scrolling when dragging along the bottom edge.
+.TP
+\fBVertTwoFingerScroll\fR (Bool)
+Enable vertical scrolling when dragging with two fingers anywhere on
+the touchpad.
+.TP
+\fBHorizTwoFingerScroll\fR (Bool)
+Enable horizontal scrolling when dragging with two fingers anywhere on
+the touchpad.
+.TP
\fBVertScrollDelta\fR (Integer)
Move distance of the finger for a scroll event.
.TP
@@ -152,6 +168,18 @@
\fBAccelFactor\fR (Float)
Acceleration factor.
.TP
+\fBPressureMotionMinZ\fR (Integer)
+Finger pressure at which minimum pressure motion factor is applied.
+.TP
+\fBPressureMotionMaxZ\fR (Integer)
+Finger pressure at which maximum pressure motion factor is applied.
+.TP
+\fBPressureMotionMinFactor\fR (Integer)
+Lowest setting for pressure motion factor.
+.TP
+\fBPressureMotionMaxFactor\fR (Integer)
+Greatest setting for pressure motion factor.
+.TP
\fBUpDownScrolling\fR (Bool)
If on, the up/down buttons generate button 4/5 events.
.
@@ -279,6 +307,9 @@
Coasting threshold scrolling speed.
.
0 disables coasting.
+.TP
+\fBSingleTapTimeout\fR (Integer)
+Timeout after a tap to recognize it as a single tap.
.
.
.LP
@@ -346,6 +377,8 @@
too small value means that visual feedback from the gui application
you are interacting with is harder to see.
.
+For this parameter to have any effect, "FastTaps" has to be disabled.
+.
.LP
The MinSpeed, MaxSpeed and AccelFactor parameters control the pointer
motion speed.
@@ -395,6 +428,28 @@
speed is increased linearly.
.
.LP
+When pressure motion is activated, the cursor motion speed depends
+on the pressure exerted on the touchpad (the more pressure exerted on
+the touchpad, the faster the pointer).
+.
+More precisely the speed is first calculated according to MinSpeed,
+MaxSpeed and AccelFactor, and then is multiplied by a sensitivity
+factor.
+.
+The sensitivity factor can be adjusted using the PressureMotion
+parameters.
+.
+If the pressure is below PressureMotionMinZ, PressureMotionMinFactor
+is used, and if the pressure is greater than PressureMotionMaxZ,
+PressureMotionMaxFactor is used.
+.
+By default, PressureMotionMinZ and PressureMotionMaxZ are equal to
+EdgeMotionMinZ and EdgeMotionMaxZ.
+.
+For a pressure value between PressureMotionMinZ and
+PressureMotionMaxZ, the factor is increased linearly.
+.
+.LP
Since most synaptics touchpad models don't have a button that
corresponds to the middle button on a mouse, the driver can emulate
middle mouse button events.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/manpages/synclient.1 new/synaptics-0.14.5/manpages/synclient.1
--- old/synaptics-0.14.4/manpages/synclient.1 2005-11-06 16:29:39.000000000 +0100
+++ new/synaptics-0.14.5/manpages/synclient.1 2006-06-04 01:56:58.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "synclient" "1" "0.14.4" "" ""
+.TH "synclient" "1" "0.14.5" "" ""
.SH "NAME"
.LP
synclient \- query and modify Synaptics TouchPad driver for
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/manpages/syndaemon.1 new/synaptics-0.14.5/manpages/syndaemon.1
--- old/synaptics-0.14.4/manpages/syndaemon.1 2005-11-06 16:29:45.000000000 +0100
+++ new/synaptics-0.14.5/manpages/syndaemon.1 2006-06-04 01:56:58.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "syndaemon" "1" "0.14.4" "" ""
+.TH "syndaemon" "1" "0.14.5" "" ""
.SH "NAME"
.LP
syndaemon \- a program that monitors keyboard activity and disables
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/synaptics.c new/synaptics-0.14.5/synaptics.c
--- old/synaptics-0.14.4/synaptics.c 2005-11-05 21:59:23.000000000 +0100
+++ new/synaptics-0.14.5/synaptics.c 2006-06-04 01:30:00.000000000 +0200
@@ -1,4 +1,7 @@
/*
+ * Copyright 2006 Stefan Bethge
+ * patch for two-fingered scrolling
+ *
* Copyright 2004 Matthias Ihmig
* patch for pressure dependent EdgeMotion speed
*
@@ -262,6 +265,17 @@
priv->synpara = NULL;
}
+static double
+synSetFloatOption(pointer options, const char *optname, double default_value)
+{
+ char *str_par;
+ double value;
+ str_par = xf86FindOptionValue(options, optname);
+ if ((!str_par) || (xf86sscanf(str_par, "%lf", &value) != 1))
+ return default_value;
+ return value;
+}
+
/*
* called by the module loader for initialization
*/
@@ -275,9 +289,9 @@
#else
pointer optList;
#endif
- char *str_par;
SynapticsSHM *pars;
char *repeater;
+ pointer opts;
/* allocate memory for SynapticsPrivateRec */
priv = xcalloc(1, sizeof(SynapticsPrivate));
@@ -314,12 +328,14 @@
xf86CollectInputOptions(local, NULL, NULL);
- xf86OptionListReport(local->options);
+ opts = local->options;
+
+ xf86OptionListReport(opts);
SetDeviceAndProtocol(local);
/* open the touchpad device */
- local->fd = xf86OpenSerial(local->options);
+ local->fd = xf86OpenSerial(opts);
if (local->fd == -1) {
ErrorF("Synaptics driver unable to open device\n");
goto SetupProc_fail;
@@ -337,74 +353,68 @@
priv->touch_on.millis = 0;
/* install shared memory or normal memory for parameters */
- priv->shm_config = xf86SetBoolOption(local->options, "SHMConfig", FALSE);
+ priv->shm_config = xf86SetBoolOption(opts, "SHMConfig", FALSE);
/* read the parameters */
pars = &priv->synpara_default;
pars->version = VERSION_ID;
- pars->left_edge = xf86SetIntOption(local->options, "LeftEdge", 1900);
- pars->right_edge = xf86SetIntOption(local->options, "RightEdge", 5400);
- pars->top_edge = xf86SetIntOption(local->options, "TopEdge", 1900);
- pars->bottom_edge = xf86SetIntOption(local->options, "BottomEdge", 4000);
- pars->finger_low = xf86SetIntOption(local->options, "FingerLow", 25);
- pars->finger_high = xf86SetIntOption(local->options, "FingerHigh", 30);
- pars->tap_time = xf86SetIntOption(local->options, "MaxTapTime", 180);
- pars->tap_move = xf86SetIntOption(local->options, "MaxTapMove", 220);
- pars->tap_time_2 = xf86SetIntOption(local->options, "MaxDoubleTapTime", 180);
- pars->click_time = xf86SetIntOption(local->options, "ClickTime", 100);
- pars->fast_taps = xf86SetIntOption(local->options, "FastTaps", FALSE);
- pars->emulate_mid_button_time = xf86SetIntOption(local->options,
+ pars->left_edge = xf86SetIntOption(opts, "LeftEdge", 1900);
+ pars->right_edge = xf86SetIntOption(opts, "RightEdge", 5400);
+ pars->top_edge = xf86SetIntOption(opts, "TopEdge", 1900);
+ pars->bottom_edge = xf86SetIntOption(opts, "BottomEdge", 4000);
+ pars->finger_low = xf86SetIntOption(opts, "FingerLow", 25);
+ pars->finger_high = xf86SetIntOption(opts, "FingerHigh", 30);
+ pars->tap_time = xf86SetIntOption(opts, "MaxTapTime", 180);
+ 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);
+ pars->emulate_mid_button_time = xf86SetIntOption(opts,
"EmulateMidButtonTime", 75);
- pars->scroll_dist_vert = xf86SetIntOption(local->options, "VertScrollDelta", 100);
- pars->scroll_dist_horiz = xf86SetIntOption(local->options, "HorizScrollDelta", 100);
- pars->edge_motion_min_z = xf86SetIntOption(local->options, "EdgeMotionMinZ", 30);
- pars->edge_motion_max_z = xf86SetIntOption(local->options, "EdgeMotionMaxZ", 160);
- pars->edge_motion_min_speed = xf86SetIntOption(local->options, "EdgeMotionMinSpeed", 1);
- pars->edge_motion_max_speed = xf86SetIntOption(local->options, "EdgeMotionMaxSpeed", 400);
- pars->edge_motion_use_always = xf86SetBoolOption(local->options, "EdgeMotionUseAlways", FALSE);
- repeater = xf86SetStrOption(local->options, "Repeater", NULL);
- pars->updown_button_scrolling = xf86SetBoolOption(local->options, "UpDownScrolling", TRUE);
- pars->leftright_button_scrolling = xf86SetBoolOption(local->options, "LeftRightScrolling", TRUE);
- pars->updown_button_repeat = xf86SetBoolOption(local->options, "UpDownScrollRepeat", TRUE);
- pars->leftright_button_repeat = xf86SetBoolOption(local->options, "LeftRightScrollRepeat", TRUE);
- pars->scroll_button_repeat = xf86SetIntOption(local->options,"ScrollButtonRepeat", 100);
- pars->touchpad_off = xf86SetIntOption(local->options, "TouchpadOff", 0);
- pars->guestmouse_off = xf86SetBoolOption(local->options, "GuestMouseOff", FALSE);
- pars->locked_drags = xf86SetBoolOption(local->options, "LockedDrags", FALSE);
- pars->tap_action[RT_TAP] = xf86SetIntOption(local->options, "RTCornerButton", 2);
- pars->tap_action[RB_TAP] = xf86SetIntOption(local->options, "RBCornerButton", 3);
- pars->tap_action[LT_TAP] = xf86SetIntOption(local->options, "LTCornerButton", 0);
- pars->tap_action[LB_TAP] = xf86SetIntOption(local->options, "LBCornerButton", 0);
- pars->tap_action[F1_TAP] = xf86SetIntOption(local->options, "TapButton1", 1);
- pars->tap_action[F2_TAP] = xf86SetIntOption(local->options, "TapButton2", 2);
- pars->tap_action[F3_TAP] = xf86SetIntOption(local->options, "TapButton3", 3);
- pars->circular_scrolling = xf86SetBoolOption(local->options, "CircularScrolling", FALSE);
- pars->circular_trigger = xf86SetIntOption(local->options, "CircScrollTrigger", 0);
- pars->circular_pad = xf86SetBoolOption(local->options, "CircularPad", FALSE);
- pars->palm_detect = xf86SetBoolOption(local->options, "PalmDetect", TRUE);
- pars->palm_min_width = xf86SetIntOption(local->options, "PalmMinWidth", 10);
- pars->palm_min_z = xf86SetIntOption(local->options, "PalmMinZ", 200);
-
- str_par = xf86FindOptionValue(local->options, "MinSpeed");
- if ((!str_par) || (xf86sscanf(str_par, "%lf", &pars->min_speed) != 1))
- pars->min_speed=0.09;
- str_par = xf86FindOptionValue(local->options, "MaxSpeed");
- if ((!str_par) || (xf86sscanf(str_par, "%lf", &pars->max_speed) != 1))
- pars->max_speed=0.18;
- str_par = xf86FindOptionValue(local->options, "AccelFactor");
- if ((!str_par) || (xf86sscanf(str_par, "%lf", &pars->accl) != 1))
- pars->accl=0.0015;
- str_par = xf86FindOptionValue(local->options, "CircScrollDelta");
- if ((!str_par) || (xf86sscanf(str_par, "%lf", &pars->scroll_dist_circ) != 1))
- pars->scroll_dist_circ = 0.1;
- str_par = xf86FindOptionValue(local->options, "CoastingSpeed");
- if ((!str_par) || (xf86sscanf(str_par, "%lf", &pars->coasting_speed) != 1))
- pars->coasting_speed = 0.0;
-
- if (pars->circular_trigger < 0 || pars->circular_trigger > 8) {
- xf86Msg(X_WARNING, "Unknown circular scrolling trigger, using 0 (edges)");
- pars->circular_trigger = 0;
- }
+ pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", 100);
+ pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", 100);
+ pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", TRUE);
+ pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", TRUE);
+ pars->scroll_twofinger_vert = xf86SetBoolOption(opts, "VertTwoFingerScroll", FALSE);
+ pars->scroll_twofinger_horiz = xf86SetBoolOption(opts, "HorizTwoFingerScroll", FALSE);
+ pars->edge_motion_min_z = xf86SetIntOption(opts, "EdgeMotionMinZ", 30);
+ pars->edge_motion_max_z = xf86SetIntOption(opts, "EdgeMotionMaxZ", 160);
+ pars->edge_motion_min_speed = xf86SetIntOption(opts, "EdgeMotionMinSpeed", 1);
+ pars->edge_motion_max_speed = xf86SetIntOption(opts, "EdgeMotionMaxSpeed", 400);
+ pars->edge_motion_use_always = xf86SetBoolOption(opts, "EdgeMotionUseAlways", FALSE);
+ repeater = xf86SetStrOption(opts, "Repeater", NULL);
+ pars->updown_button_scrolling = xf86SetBoolOption(opts, "UpDownScrolling", TRUE);
+ pars->leftright_button_scrolling = xf86SetBoolOption(opts, "LeftRightScrolling", TRUE);
+ pars->updown_button_repeat = xf86SetBoolOption(opts, "UpDownScrollRepeat", TRUE);
+ pars->leftright_button_repeat = xf86SetBoolOption(opts, "LeftRightScrollRepeat", TRUE);
+ pars->scroll_button_repeat = xf86SetIntOption(opts,"ScrollButtonRepeat", 100);
+ pars->touchpad_off = xf86SetIntOption(opts, "TouchpadOff", 0);
+ pars->guestmouse_off = xf86SetBoolOption(opts, "GuestMouseOff", FALSE);
+ pars->locked_drags = xf86SetBoolOption(opts, "LockedDrags", FALSE);
+ pars->tap_action[RT_TAP] = xf86SetIntOption(opts, "RTCornerButton", 2);
+ pars->tap_action[RB_TAP] = xf86SetIntOption(opts, "RBCornerButton", 3);
+ pars->tap_action[LT_TAP] = xf86SetIntOption(opts, "LTCornerButton", 0);
+ pars->tap_action[LB_TAP] = xf86SetIntOption(opts, "LBCornerButton", 0);
+ pars->tap_action[F1_TAP] = xf86SetIntOption(opts, "TapButton1", 1);
+ pars->tap_action[F2_TAP] = xf86SetIntOption(opts, "TapButton2", 2);
+ pars->tap_action[F3_TAP] = xf86SetIntOption(opts, "TapButton3", 3);
+ pars->circular_scrolling = xf86SetBoolOption(opts, "CircularScrolling", FALSE);
+ pars->circular_trigger = xf86SetIntOption(opts, "CircScrollTrigger", 0);
+ pars->circular_pad = xf86SetBoolOption(opts, "CircularPad", FALSE);
+ pars->palm_detect = xf86SetBoolOption(opts, "PalmDetect", TRUE);
+ pars->palm_min_width = xf86SetIntOption(opts, "PalmMinWidth", 10);
+ pars->palm_min_z = xf86SetIntOption(opts, "PalmMinZ", 200);
+ pars->single_tap_timeout = xf86SetIntOption(opts, "SingleTapTimeout", 180);
+ pars->press_motion_min_z = xf86SetIntOption(opts, "PressureMotionMinZ", pars->edge_motion_min_z);
+ pars->press_motion_max_z = xf86SetIntOption(opts, "PressureMotionMaxZ", pars->edge_motion_max_z);
+
+ pars->min_speed = synSetFloatOption(opts, "MinSpeed", 0.09);
+ pars->max_speed = synSetFloatOption(opts, "MaxSpeed", 0.18);
+ pars->accl = synSetFloatOption(opts, "AccelFactor", 0.0015);
+ pars->scroll_dist_circ = synSetFloatOption(opts, "CircScrollDelta", 0.1);
+ pars->coasting_speed = synSetFloatOption(opts, "CoastingSpeed", 0.0);
+ pars->press_motion_min_factor = synSetFloatOption(opts, "PressureMotionMinFactor", 1.0);
+ pars->press_motion_max_factor = synSetFloatOption(opts, "PressureMotionMaxFactor", 1.0);
/* Warn about (and fix) incorrectly configured TopEdge/BottomEdge parameters */
if (pars->top_edge > pars->bottom_edge) {
@@ -444,9 +454,9 @@
goto SetupProc_fail;
}
- local->history_size = xf86SetIntOption( local->options, "HistorySize", 0 );
+ local->history_size = xf86SetIntOption(opts, "HistorySize", 0);
- xf86ProcessCommonOptions(local, local->options);
+ xf86ProcessCommonOptions(local, opts);
local->flags |= XI86_CONFIGURED;
if (local->fd != -1) {
@@ -888,7 +898,7 @@
((hw->z > para->finger_low) && priv->finger_flag));
if (!para->palm_detect)
- return finger;
+ return finger;
/* palm detection */
if (finger) {
@@ -1021,12 +1031,13 @@
switch (priv->tap_state) {
case TS_1:
- case TS_2A:
case TS_3:
case TS_5:
return para->tap_time;
case TS_SINGLETAP:
return para->click_time;
+ case TS_2A:
+ return para->single_tap_timeout;
case TS_2B:
return para->tap_time_2;
default:
@@ -1193,7 +1204,9 @@
break;
}
if (moving_state && !priv->palm &&
- !priv->vert_scroll_on && !priv->horiz_scroll_on && !priv->circ_scroll_on) {
+ !priv->vert_scroll_edge_on && !priv->horiz_scroll_edge_on &&
+ !priv->vert_scroll_twofinger_on && !priv->horiz_scroll_twofinger_on &&
+ !priv->circ_scroll_on) {
delay = MIN(delay, 13);
if (priv->count_packet_finger > 3) { /* min. 3 packets */
double tmpf;
@@ -1248,6 +1261,22 @@
speed = para->min_speed;
}
+ /* modify speed according to pressure */
+ {
+ int minZ = para->press_motion_min_z;
+ int maxZ = para->press_motion_max_z;
+ double minFctr = para->press_motion_min_factor;
+ double maxFctr = para->press_motion_max_factor;
+
+ if (hw->z <= minZ) {
+ speed *= minFctr;
+ } else if (hw->z >= maxZ) {
+ speed *= maxFctr;
+ } else {
+ speed *= minFctr + (hw->z - minZ) * (maxFctr - minFctr) / (maxZ - minZ);
+ }
+ }
+
/* save the fraction, report the integer part */
tmpf = dx * speed + x_edge_speed * dtime + priv->frac_x;
priv->frac_x = xf86modf(tmpf, &integral);
@@ -1330,8 +1359,10 @@
priv->autoscroll_xspd = 0;
priv->autoscroll_yspd = 0;
priv->circ_scroll_on = FALSE;
- priv->vert_scroll_on = FALSE;
- priv->horiz_scroll_on = FALSE;
+ priv->vert_scroll_edge_on = FALSE;
+ priv->horiz_scroll_edge_on = FALSE;
+ priv->vert_scroll_twofinger_on = FALSE;
+ priv->horiz_scroll_twofinger_on = FALSE;
return delay;
}
@@ -1357,45 +1388,75 @@
}
}
if (!priv->circ_scroll_on) {
- if ((para->scroll_dist_vert != 0) && (edge & RIGHT_EDGE)) {
- priv->vert_scroll_on = TRUE;
- priv->scroll_y = hw->y;
- DBG(7, ErrorF("vert edge scroll detected on right edge\n"));
- }
- if ((para->scroll_dist_horiz != 0) && (edge & BOTTOM_EDGE)) {
- priv->horiz_scroll_on = TRUE;
- priv->scroll_x = hw->x;
- DBG(7, ErrorF("horiz edge scroll detected on bottom edge\n"));
+ if (hw->numFingers == 2) {
+ if ((para->scroll_twofinger_vert) && (para->scroll_dist_vert != 0)) {
+ priv->vert_scroll_twofinger_on = TRUE;
+ priv->scroll_y = hw->y;
+ DBG(7, ErrorF("vert two-finger scroll detected\n"));
+ }
+ if ((para->scroll_twofinger_horiz) && (para->scroll_dist_horiz != 0)) {
+ priv->horiz_scroll_twofinger_on = TRUE;
+ priv->scroll_x = hw->x;
+ DBG(7, ErrorF("horiz two-finger scroll detected\n"));
+ }
+ }
+ if (!priv->vert_scroll_twofinger_on && !priv->horiz_scroll_twofinger_on) {
+ if ((para->scroll_edge_vert) && (para->scroll_dist_vert != 0) &&
+ (edge & RIGHT_EDGE)) {
+ priv->vert_scroll_edge_on = TRUE;
+ priv->scroll_y = hw->y;
+ DBG(7, ErrorF("vert edge scroll detected on right edge\n"));
+ }
+ if ((para->scroll_edge_horiz) && (para->scroll_dist_horiz != 0) &&
+ (edge & BOTTOM_EDGE)) {
+ priv->horiz_scroll_edge_on = TRUE;
+ priv->scroll_x = hw->x;
+ DBG(7, ErrorF("horiz edge scroll detected on bottom edge\n"));
+ }
}
}
}
{
- Bool oldv = priv->vert_scroll_on || (priv->circ_scroll_on && priv->circ_scroll_vert);
- Bool oldh = priv->horiz_scroll_on || (priv->circ_scroll_on && !priv->circ_scroll_vert);
+ Bool oldv = priv->vert_scroll_edge_on || (priv->circ_scroll_on && priv->circ_scroll_vert);
+ Bool oldh = priv->horiz_scroll_edge_on || (priv->circ_scroll_on && !priv->circ_scroll_vert);
if (priv->circ_scroll_on && !finger) {
/* circular scroll locks in until finger is raised */
DBG(7, ErrorF("cicular scroll off\n"));
priv->circ_scroll_on = FALSE;
}
- if (priv->vert_scroll_on && (!(edge & RIGHT_EDGE) || !finger)) {
+
+ if (hw->numFingers < 2) {
+ if (priv->vert_scroll_twofinger_on) {
+ DBG(7, ErrorF("vert two-finger scroll off\n"));
+ priv->vert_scroll_twofinger_on = FALSE;
+ }
+ if (priv->horiz_scroll_twofinger_on) {
+ DBG(7, ErrorF("horiz two-finger scroll off\n"));
+ priv->horiz_scroll_twofinger_on = FALSE;
+ }
+ }
+
+ if (priv->vert_scroll_edge_on && (!(edge & RIGHT_EDGE) || !finger)) {
DBG(7, ErrorF("vert edge scroll off\n"));
- priv->vert_scroll_on = FALSE;
+ priv->vert_scroll_edge_on = FALSE;
}
- if (priv->horiz_scroll_on && (!(edge & BOTTOM_EDGE) || !finger)) {
+ if (priv->horiz_scroll_edge_on && (!(edge & BOTTOM_EDGE) || !finger)) {
DBG(7, ErrorF("horiz edge scroll off\n"));
- priv->horiz_scroll_on = FALSE;
+ priv->horiz_scroll_edge_on = FALSE;
}
- if ((oldv || oldh) && !(priv->circ_scroll_on || priv->vert_scroll_on ||
- priv->horiz_scroll_on)) {
+ if ((oldv || oldh) &&
+ !(priv->circ_scroll_on || priv->vert_scroll_edge_on ||
+ priv->horiz_scroll_edge_on)) {
start_coasting(priv, hw, edge, oldv);
}
}
/* if hitting a corner (top right or bottom right) while vertical scrolling
is active, switch over to circular scrolling smoothly */
- if (priv->vert_scroll_on && !priv->horiz_scroll_on && para->circular_scrolling) {
+ if (priv->vert_scroll_edge_on && !priv->horiz_scroll_edge_on &&
+ para->circular_scrolling) {
if ((edge & RIGHT_EDGE) && (edge & (TOP_EDGE | BOTTOM_EDGE))) {
- priv->vert_scroll_on = FALSE;
+ priv->vert_scroll_edge_on = FALSE;
priv->circ_scroll_on = TRUE;
priv->circ_scroll_vert = TRUE;
priv->scroll_a = angle(priv, hw->x, hw->y);
@@ -1403,9 +1464,10 @@
}
}
/* Same treatment for horizontal scrolling */
- if (priv->horiz_scroll_on && !priv->vert_scroll_on && para->circular_scrolling) {
+ if (priv->horiz_scroll_edge_on && !priv->vert_scroll_edge_on &&
+ para->circular_scrolling) {
if ((edge & BOTTOM_EDGE) && (edge & (LEFT_EDGE | RIGHT_EDGE))) {
- priv->horiz_scroll_on = FALSE;
+ priv->horiz_scroll_edge_on = FALSE;
priv->circ_scroll_on = TRUE;
priv->circ_scroll_vert = FALSE;
priv->scroll_a = angle(priv, hw->x, hw->y);
@@ -1413,10 +1475,13 @@
}
}
- if (priv->vert_scroll_on || priv->horiz_scroll_on || priv->circ_scroll_on)
+ if (priv->vert_scroll_edge_on || priv->horiz_scroll_edge_on ||
+ priv->vert_scroll_twofinger_on || priv->horiz_scroll_twofinger_on ||
+ priv->circ_scroll_on) {
priv->scroll_packet_count++;
+ }
- if (priv->vert_scroll_on) {
+ if (priv->vert_scroll_edge_on || priv->vert_scroll_twofinger_on) {
/* + = down, - = up */
int delta = para->scroll_dist_vert;
if (delta > 0) {
@@ -1430,7 +1495,7 @@
}
}
}
- if (priv->horiz_scroll_on) {
+ if (priv->horiz_scroll_edge_on || priv->horiz_scroll_twofinger_on) {
/* + = right, - = left */
int delta = para->scroll_dist_horiz;
if (delta > 0) {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/synaptics.h new/synaptics-0.14.5/synaptics.h
--- old/synaptics-0.14.4/synaptics.h 2005-11-05 21:59:23.000000000 +0100
+++ new/synaptics-0.14.5/synaptics.h 2006-06-04 01:30:00.000000000 +0200
@@ -49,17 +49,22 @@
struct SynapticsHwInfo synhw;
/* Parameter data */
- int left_edge, right_edge, top_edge, bottom_edge; /* edge coordinates absolute */
- int finger_low, finger_high; /* finger detection values in Z-values */
+ int left_edge, right_edge, top_edge, bottom_edge; /* edge coordinates absolute */
+ int finger_low, finger_high; /* finger detection values in Z-values */
int tap_time;
int tap_move; /* max. tapping time and movement in packets and coord. */
+ int single_tap_timeout; /* timeout to recognize a single tap */
int tap_time_2; /* max. tapping time for double taps */
int click_time; /* The duration of a single click */
Bool fast_taps; /* Faster reaction to single taps */
int emulate_mid_button_time; /* Max time between left and right button presses to
emulate a middle button press. */
- int scroll_dist_vert; /* Scrolling distance in absolute coordinates */
- int scroll_dist_horiz; /* Scrolling distance in absolute coordinates */
+ int scroll_dist_vert; /* Scrolling distance in absolute coordinates */
+ int scroll_dist_horiz; /* Scrolling distance in absolute coordinates */
+ Bool scroll_edge_vert; /* Enable/disable vertical scrolling on right edge */
+ Bool scroll_edge_horiz; /* Enable/disable horizontal scrolling on left edge */
+ Bool scroll_twofinger_vert; /* Enable/disable vertical two-finger scrolling */
+ Bool scroll_twofinger_horiz; /* Enable/disable horizontal two-finger scrolling */
double min_speed, max_speed, accl; /* movement parameters */
int edge_motion_min_z; /* finger pressure at which minimum edge motion speed is set */
int edge_motion_max_z; /* finger pressure at which maximum edge motion speed is set */
@@ -89,6 +94,10 @@
int palm_min_width; /* Palm detection width */
int palm_min_z; /* Palm detection depth */
double coasting_speed; /* Coasting threshold scrolling speed */
+ int press_motion_min_z; /* finger pressure at which minimum pressure motion factor is applied */
+ int press_motion_max_z; /* finger pressure at which maximum pressure motion factor is applied */
+ double press_motion_min_factor; /* factor applied on speed when finger pressure is at minimum */
+ double press_motion_max_factor; /* factor applied on speed when finger pressure is at minimum */
} SynapticsSHM;
/*
@@ -190,9 +199,11 @@
enum TapButtonState tap_button_state; /* Current tap action */
SynapticsMoveHistRec touch_on; /* data when the touchpad is touched/released */
- Bool vert_scroll_on; /* scrolling flag */
- Bool horiz_scroll_on; /* scrolling flag */
- Bool circ_scroll_on; /* scrolling flag */
+ Bool vert_scroll_edge_on; /* Keeps track of currently active scroll modes */
+ Bool horiz_scroll_edge_on; /* Keeps track of currently active scroll modes */
+ Bool vert_scroll_twofinger_on; /* Keeps track of currently active scroll modes */
+ Bool horiz_scroll_twofinger_on; /* Keeps track of currently active scroll modes */
+ Bool circ_scroll_on; /* Keeps track of currently active scroll modes */
Bool circ_scroll_vert; /* True: Generate vertical scroll events
False: Generate horizontal events */
double autoscroll_xspd; /* Horizontal coasting speed */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/synaptics.spec new/synaptics-0.14.5/synaptics.spec
--- old/synaptics-0.14.4/synaptics.spec 2005-11-06 16:29:49.000000000 +0100
+++ new/synaptics-0.14.5/synaptics.spec 2006-06-04 01:56:58.000000000 +0200
@@ -1,12 +1,13 @@
+%define moduledir %(pkg-config xorg-server --variable=moduledir || echo /usr/X11R6)
+
Summary: The Synaptics touchpad X driver
Name: synaptics
-Version: 0.14.4
+Version: 0.14.5
Release: 1
License: GPL
Group: User Interface/X
Source: %{name}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-root
-BuildPreReq: XFree86-devel
%description
This is a driver for the Synaptics TouchPad for XOrg/XFree86 4.x. A Synaptics
@@ -48,7 +49,7 @@
%files
%defattr(-,root,root)
/usr/local
-/usr/X11R6
+%{moduledir}
%doc COMPATIBILITY FILES INSTALL INSTALL.DE INSTALL.FR LICENSE README README.alps TODO
%doc trouble-shooting.txt
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/synaptics-0.14.4/synclient.c new/synaptics-0.14.5/synclient.c
--- old/synaptics-0.14.4/synclient.c 2005-11-05 21:59:23.000000000 +0100
+++ new/synaptics-0.14.5/synclient.c 2006-06-04 01:30:00.000000000 +0200
@@ -58,11 +58,16 @@
DEFINE_PAR("MaxTapTime", tap_time, PT_INT, 0, 1000),
DEFINE_PAR("MaxTapMove", tap_move, PT_INT, 0, 2000),
DEFINE_PAR("MaxDoubleTapTime", tap_time_2, PT_INT, 0, 1000),
+ DEFINE_PAR("SingleTapTimeout", single_tap_timeout, PT_INT, 0, 1000),
DEFINE_PAR("ClickTime", click_time, PT_INT, 0, 1000),
DEFINE_PAR("FastTaps", fast_taps, PT_BOOL, 0, 1),
DEFINE_PAR("EmulateMidButtonTime", emulate_mid_button_time, PT_INT, 0, 1000),
DEFINE_PAR("VertScrollDelta", scroll_dist_vert, PT_INT, 0, 1000),
DEFINE_PAR("HorizScrollDelta", scroll_dist_horiz, PT_INT, 0, 1000),
+ DEFINE_PAR("VertEdgeScroll", scroll_edge_vert, PT_BOOL, 0, 1),
+ DEFINE_PAR("HorizEdgeScroll", scroll_edge_horiz, PT_BOOL, 0, 1),
+ DEFINE_PAR("VertTwoFingerScroll", scroll_twofinger_vert, PT_BOOL, 0, 1),
+ DEFINE_PAR("HorizTwoFingerScroll", scroll_twofinger_horiz, PT_BOOL, 0, 1),
DEFINE_PAR("MinSpeed", min_speed, PT_DOUBLE, 0, 1.0),
DEFINE_PAR("MaxSpeed", max_speed, PT_DOUBLE, 0, 1.0),
DEFINE_PAR("AccelFactor", accl, PT_DOUBLE, 0, 0.2),
@@ -94,6 +99,10 @@
DEFINE_PAR("PalmMinWidth", palm_min_width, PT_INT, 0, 15),
DEFINE_PAR("PalmMinZ", palm_min_z, PT_INT, 0, 255),
DEFINE_PAR("CoastingSpeed", coasting_speed, PT_DOUBLE, 0, 20),
+ DEFINE_PAR("PressureMotionMinZ", press_motion_min_z, PT_INT, 1, 255),
+ DEFINE_PAR("PressureMotionMaxZ", press_motion_max_z, PT_INT, 1, 255),
+ DEFINE_PAR("PressureMotionMinFactor", press_motion_min_factor, PT_DOUBLE, 0, 10.0),
+ DEFINE_PAR("PressureMotionMaxFactor", press_motion_max_factor, PT_DOUBLE, 0, 10.0),
{ 0, 0, 0, 0, 0 }
};
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit-unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit-help@opensuse.org