[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-input-synaptics: Changes to 'debian-unstable'



 FILES                 |    2 -
 INSTALL               |   40 +++++++++++++++++--------------
 Makefile              |    7 +----
 README.alps           |   20 ++++++++++-----
 alpscomm.c            |    2 -
 debian/changelog      |    8 ++++++
 debian/control        |    4 +--
 debian/xsfbs/xsfbs.mk |   27 ++++++++++++++-------
 debian/xsfbs/xsfbs.sh |    7 -----
 eventcomm.c           |    2 -
 manpages/synaptics.5  |   42 ++++++++++++++++++++++++++-------
 synaptics.c           |   63 ++++++++++++++++++++++++++++++++++++++++----------
 synaptics.h           |    1 
 synclient.c           |   13 +++++-----
 14 files changed, 161 insertions(+), 77 deletions(-)

New commits:
commit 9c63eb6a2782b7326b13502c1ef15a4f0188cdbe
Author: Mattia Dongili <malattia@linux.it>
Date:   Mon Sep 17 16:14:37 2007 +0900

    Revert "use [ ! -f Makefile ] || $(MAKE) distclean"
    
    This reverts commit 8f5fea137197c561a9a515959f369fb238a6d824.
    
    ... unfortunately the synaptics driver doesn't use the autoconf stuff
    so Makefile is always there

diff --git a/debian/rules b/debian/rules
index 6d49e1b..728920c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -32,7 +32,7 @@ clean: xsfclean
 	rm -f build-stamp configure-stamp
 
 	# clean up:
-	[ ! -f Makefile ] || $(MAKE) distclean
+	-$(MAKE) clean
 
 	dh_clean 
 

commit 048cd47c7bb5681776982123a36ac7c0ee4217fe
Author: Mattia Dongili <malattia@linux.it>
Date:   Mon Sep 17 16:12:09 2007 +0900

    /bin/arch is missing in current util-linux, replace it with uname -m
    Signed-off-by: Mattia Dongili <malattia@linux.it>

diff --git a/Makefile b/Makefile
index 7ca251a..f79f242 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ BINDIR = $(DESTDIR)$(PREFIX)/bin
 MANDIR = $(DESTDIR)$(PREFIX)/share/man
 
 ifeq ($(ARCH),)
-  ARCH = $(shell /bin/arch)
+  ARCH = $(shell /bin/uname -m)
 endif
 ifeq ($(ARCH),amd64)
   ARCH = x86_64

commit 8f5fea137197c561a9a515959f369fb238a6d824
Author: Mattia Dongili <malattia@linux.it>
Date:   Mon Sep 17 16:05:42 2007 +0900

    use [ ! -f Makefile ] || $(MAKE) distclean
    and make lintian happy
    
    Signed-off-by: Mattia Dongili <malattia@linux.it>

diff --git a/debian/rules b/debian/rules
index 728920c..6d49e1b 100755
--- a/debian/rules
+++ b/debian/rules
@@ -32,7 +32,7 @@ clean: xsfclean
 	rm -f build-stamp configure-stamp
 
 	# clean up:
-	-$(MAKE) clean
+	[ ! -f Makefile ] || $(MAKE) distclean
 
 	dh_clean 
 

commit cf9700dc323dd01111a82ada8acd531e6a3d3e76
Author: Mattia Dongili <malattia@linux.it>
Date:   Mon Sep 17 16:03:43 2007 +0900

    Use pkg-config to get xorg cflags
    
    Signed-off-by: Mattia Dongili <malattia@linux.it>

diff --git a/Makefile b/Makefile
index f953ed8..7ca251a 100644
--- a/Makefile
+++ b/Makefile
@@ -34,10 +34,7 @@ ifeq ($(BUILD_MODULAR),y)
   LDCOMBINEFLAGS = -shared -lc
   PICFLAG = $(call check_gcc,-fPIC,)
   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)
+  ALLINCLUDES = $(shell pkg-config --cflags xorg-server)
 else
   INSTALLED_X = /usr/X11R6
   INPUT_MODULE_DIR = $(DESTDIR)/$(INSTALLED_X)/$(LIBDIR)/modules/input

commit 817de3f10a2d00b1a18d3a9273ddec5ea1b9e423
Author: Mattia Dongili <malattia@linux.it>
Date:   Mon Sep 17 15:30:53 2007 +0900

    Update for xserver-xorg-core 1.4
    
    Signed-off-by: Mattia Dongili <malattia@linux.it>

diff --git a/debian/changelog b/debian/changelog
index fee93d1..a780b5f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xfree86-driver-synaptics (0.14.7~git20070706-1) unstable; urgency=low
+
+  * build with xserver-xorg-core 1.4 (Closes: #442314)
+  * update to current git
+  * update xsfbs
+
+ -- Mattia Dongili <malattia@debian.org>  Mon, 17 Sep 2007 15:25:56 +0900
+
 xfree86-driver-synaptics (0.14.7~git20070517-2) unstable; urgency=low
 
   * use xsfbs to build the driver and automagically get xserver-xorg deps
diff --git a/debian/control b/debian/control
index d5a1691..161eb6a 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,7 @@ Section: x11
 Priority: optional
 Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
 Uploaders: Mattia Dongili <malattia@debian.org>
-Build-Depends: debhelper (>= 4.0.0), libx11-dev, libxext-dev, libxi-dev, x11proto-core-dev, xserver-xorg-dev (>= 2:1.2.99.902), pkg-config
+Build-Depends: debhelper (>= 4.0.0), libx11-dev, libxext-dev, libxi-dev, x11proto-core-dev, xserver-xorg-dev (>= 2:1.4), pkg-config
 Standards-Version: 3.7.2
 XS-Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-input-synaptics
 XS-Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-input-synaptics.git
@@ -21,7 +21,7 @@ Architecture: alpha amd64 arm hppa i386 ia64 m68k mips mipsel powerpc sparc
 Depends: ${shlibs:Depends}, ${xserver:Depends}, libxi6
 Conflicts: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
 Replaces: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
-Provides: xserver-xorg-input, xfree86-driver-synaptics, xorg-driver-synaptics
+Provides: ${xinpdriver:Provides}, xfree86-driver-synaptics, xorg-driver-synaptics
 Suggests: gsynaptics | ksynaptics | qsynaptics
 Description: Synaptics TouchPad driver for X.Org/XFree86 server
  This package provides an input driver for the X.Org/XFree86 X server to enable

commit 575efb7249d7cf194f07e45db17e601d9c259231
Author: Brice Goglin <bgoglin@debian.org>
Date:   Wed Aug 29 09:36:00 2007 +0200

    Do not call laptop-detect, let the only user call it directly

diff --git a/debian/xsfbs/xsfbs.sh b/debian/xsfbs/xsfbs.sh
index 52473ca..a90ff7d 100644
--- a/debian/xsfbs/xsfbs.sh
+++ b/debian/xsfbs/xsfbs.sh
@@ -59,13 +59,6 @@ fi
 
 ARCHITECTURE="$(dpkg --print-installation-architecture)"
 
-LAPTOP=""
-if [ -n "$(which laptop-detect)" ]; then
-    if laptop-detect >/dev/null; then
-	LAPTOP=true
-    fi
-fi
-
 if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then
   RECONFIGURE="true"
 else

commit 12a633f722a2ff9677728d1e2ae56767f804232a
Author: Brice Goglin <Brice.Goglin@ens-lyon.org>
Date:   Thu Jul 12 16:06:22 2007 +0200

    Fix "display the output of quilt push/pop".
    
    Fix commit 16d97b30b91da02d5a3edc2b895cbd4a1995f62d to check the
    return value of quilt, not the one of tee.

diff --git a/debian/xsfbs/xsfbs.mk b/debian/xsfbs/xsfbs.mk
index 5f13302..bfca7bb 100755
--- a/debian/xsfbs/xsfbs.mk
+++ b/debian/xsfbs/xsfbs.mk
@@ -147,9 +147,11 @@ $(STAMP_DIR)/patch: $(STAMP_DIR)/prepare
 	fi; \
 	if $(QUILT) next >/dev/null 2>&1; then \
 	  echo -n "Applying patches..."; \
-	  if $(QUILT) push -a -v 2>&1 | tee $(STAMP_DIR)/log/patch; then \
+	  if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \
+	    cat $(STAMP_DIR)/log/patch; \
 	    echo "successful."; \
 	  else \
+	    cat $(STAMP_DIR)/log/patch; \
 	    echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \
 	    exit 1; \
 	  fi; \
@@ -164,9 +166,11 @@ unpatch:
 	rm -f $(STAMP_DIR)/patch
 	@echo -n "Unapplying patches..."; \
 	if [ -e $(STAMP_DIR)/patches/applied-patches ]; then \
-	  if $(QUILT) pop -a -v 2>&1 | tee $(STAMP_DIR)/log/unpatch; then \
+	  if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \
+	    cat $(STAMP_DIR)/log/unpatch; \
 	    echo "successful."; \
 	  else \
+	    cat $(STAMP_DIR)/log/unpatch; \
 	    echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \
 	    exit 1; \
 	  fi; \

commit e29b56820909668b062fdba72458ee9483a4ae44
Author: Brice Goglin <Brice.Goglin@ens-lyon.org>
Date:   Mon Jul 9 21:50:47 2007 +0200

    Minor fixes in the patching system.
    
     * Fix debian/rules to not be confused by ~/.quiltrc or QUILT_PATCHES (as in #369920).
     * Display which patches are applied and removed instead of just the first one (for #428090).

diff --git a/debian/xsfbs/xsfbs.mk b/debian/xsfbs/xsfbs.mk
index 2930c1e..5f13302 100755
--- a/debian/xsfbs/xsfbs.mk
+++ b/debian/xsfbs/xsfbs.mk
@@ -21,6 +21,11 @@
 # Pass $(DH_OPTIONS) into the environment for debhelper's benefit.
 export DH_OPTIONS
 
+# force quilt to not use ~/.quiltrc
+QUILT = quilt --quiltrc /dev/null
+# force QUILT_PATCHES to the default in case it is exported in the environment
+QUILT_PATCHES = patches/
+
 # Set up parameters for the upstream build environment.
 
 # Determine (source) package name from Debian changelog.
@@ -140,9 +145,9 @@ $(STAMP_DIR)/patch: $(STAMP_DIR)/prepare
 		echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \
 		exit 1; \
 	fi; \
-	if quilt next >/dev/null 2>&1; then \
+	if $(QUILT) next >/dev/null 2>&1; then \
 	  echo -n "Applying patches..."; \
-	  if quilt push -a -v 2>&1 | tee $(STAMP_DIR)/log/patch; then \
+	  if $(QUILT) push -a -v 2>&1 | tee $(STAMP_DIR)/log/patch; then \
 	    echo "successful."; \
 	  else \
 	    echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \
@@ -159,7 +164,7 @@ unpatch:
 	rm -f $(STAMP_DIR)/patch
 	@echo -n "Unapplying patches..."; \
 	if [ -e $(STAMP_DIR)/patches/applied-patches ]; then \
-	  if quilt pop -a -v 2>&1 | tee $(STAMP_DIR)/log/unpatch; then \
+	  if $(QUILT) pop -a -v 2>&1 | tee $(STAMP_DIR)/log/unpatch; then \
 	    echo "successful."; \
 	  else \
 	    echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \
@@ -295,17 +300,17 @@ patch-audit: prepare unpatch
 	@echo -n "Auditing patches..."; \
 	>$(STAMP_DIR)/log/patch; \
 	FUZZY=; \
-	while [ -n "$$(quilt next)" ]; do \
-	  RESULT=$$(quilt push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\
+	while [ -n "$$($(QUILT) next)" ]; do \
+	  RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\
 	  case "$$RESULT" in \
 	    succeeded) \
-	      echo "fuzzy patch: $$(quilt top)" \
-	        | tee -a $(STAMP_DIR)/log/$$(quilt top); \
+	      echo "fuzzy patch: $$($(QUILT) top)" \
+	        | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \
 	      FUZZY=yes; \
 	      ;; \
 	    FAILED) \
-	      echo "broken patch: $$(quilt next)" \
-	        | tee -a $(STAMP_DIR)/log/$$(quilt next); \
+	      echo "broken patch: $$($(QUILT) next)" \
+	        | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \
 	      exit 1; \
 	      ;; \
 	  esac; \

commit 16d97b30b91da02d5a3edc2b895cbd4a1995f62d
Author: Brice Goglin <Brice.Goglin@ens-lyon.org>
Date:   Mon Jul 9 19:06:05 2007 +0200

    Fix displaying of patches applied by quilt.
    
    As requested in bug #428090, we silence the output of quilt next
    and display the output of quilt push/pop.

diff --git a/debian/xsfbs/xsfbs.mk b/debian/xsfbs/xsfbs.mk
index 63dde45..2930c1e 100755
--- a/debian/xsfbs/xsfbs.mk
+++ b/debian/xsfbs/xsfbs.mk
@@ -140,9 +140,9 @@ $(STAMP_DIR)/patch: $(STAMP_DIR)/prepare
 		echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \
 		exit 1; \
 	fi; \
-	if quilt next; then \
+	if quilt next >/dev/null 2>&1; then \
 	  echo -n "Applying patches..."; \
-	  if quilt push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \
+	  if quilt push -a -v 2>&1 | tee $(STAMP_DIR)/log/patch; then \
 	    echo "successful."; \
 	  else \
 	    echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \
@@ -159,7 +159,7 @@ unpatch:
 	rm -f $(STAMP_DIR)/patch
 	@echo -n "Unapplying patches..."; \
 	if [ -e $(STAMP_DIR)/patches/applied-patches ]; then \
-	  if quilt pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \
+	  if quilt pop -a -v 2>&1 | tee $(STAMP_DIR)/log/unpatch; then \
 	    echo "successful."; \
 	  else \
 	    echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \

commit cd6a1225ec319cad9788e8fba158d9792b55de23
Author: Joseph P. Skudlarek <Jskud@briareus.(none)>
Date:   Fri Jul 6 15:39:53 2007 +0200

    Implement "corner coasting".

diff --git a/INSTALL b/INSTALL
index 91b6b67..900b8c5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -65,6 +65,8 @@ Section "InputDevice"
   Option	"MaxTapTime"		"180"
   Option	"MaxTapMove"		"220"
   Option	"VertScrollDelta" 	"100"
+  Option	"CornerCoasting" 	"1"
+  Option	"CoastingSpeed"		"3"
   Option	"MinSpeed"		"0.09"
   Option	"MaxSpeed"		"0.18"
   Option	"AccelFactor"		"0.0015"
diff --git a/README.alps b/README.alps
index 206696f..d89b38b 100644
--- a/README.alps
+++ b/README.alps
@@ -30,6 +30,8 @@ Section "InputDevice"
   Option	"EmulateMidButtonTime"	"75"
   Option	"VertScrollDelta"	"20"
   Option	"HorizScrollDelta"	"20"
+  Option	"CornerCoasting"	"1"
+  Option	"CoastingSpeed"		"3"
   Option	"MinSpeed"		"0.3"
   Option	"MaxSpeed"		"0.75"
   Option	"AccelFactor"		"0.015"
diff --git a/manpages/synaptics.5 b/manpages/synaptics.5
index 14be846..6e99bd0 100644
--- a/manpages/synaptics.5
+++ b/manpages/synaptics.5
@@ -134,6 +134,9 @@ Enable vertical scrolling when dragging along the right edge.
 \fBHorizEdgeScroll\fR (Bool)
 Enable horizontal scrolling when dragging along the bottom edge.
 .TP
+\fBCornerCoasting\fR (Bool)
+Enable edge scrolling to continue while the finger stays in an edge corner.
+.TP
 \fBVertTwoFingerScroll\fR (Bool)
 Enable vertical scrolling when dragging with two fingers anywhere on
 the touchpad.
@@ -524,9 +527,15 @@ scrolling.
 Coasting is enabled by setting the CoastingSpeed parameter to a
 non-zero value.
 .
-When coasting is enabled, horizontal/vertical scrolling can continue
-after the finger is released from the lower/right edge of the
-touchpad.
+Coasting comes in two flavors: conventional (finger off) coasting, and
+corner (finger on) coasting.
+.LP
+Conventional coasting is enabled when coasting is enabled,
+and CornerCoasting is set to false.
+.
+When conventional coasting is enabled, horizontal/vertical scrolling
+can continue after the finger is released from the lower/right edge of
+the touchpad.
 .
 The driver computes the scrolling speed corresponding to the finger
 speed immediately before the finger leaves the touchpad.
@@ -537,6 +546,21 @@ with the same speed in the same direction until the finger touches the
 touchpad again.
 .
 .LP
+Corner coasting is enabled when coasting is enabled, and
+CornerCoasting is set to true.
+.
+When corner coasting is enabled, edge scrolling can continue as long
+as the finger stays in a corner.
+.
+Coasting begins when the finger enters the corner, and continues until
+the finger leaves the corner.
+.
+CornerCoasting takes precedence over the seamless switch from edge
+scrolling to circular scrolling.  That is, if CornerCoasting is
+active, scrolling will stop, and circular scrolling will not start,
+when the finger leaves the corner.
+.
+.LP
 Trackstick emulation mode is entered when pressing the finger hard on
 the touchpad.
 .
diff --git a/synaptics.c b/synaptics.c
index d65dbd1..802132c 100644
--- a/synaptics.c
+++ b/synaptics.c
@@ -1,4 +1,7 @@
 /*
+ *   Copyright 2007 Joseph P. Skudlarek <Jskud@Jskud.com>
+ *     patch for corner coasting (originally called corner edge scrolling)
+ *
  *   Copyright 2006 Christian Thaeter <chth@gmx.net>
  *     patch for Trackstick mode
  *
@@ -428,6 +431,7 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
     pars->emulate_twofinger_z = xf86SetIntOption(opts, "EmulateTwoFingerMinZ", 257);
     pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", TRUE);
     pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", TRUE);
+    pars->scroll_edge_corner = xf86SetBoolOption(opts, "CornerCoasting", FALSE);
     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);
@@ -1465,6 +1469,14 @@ start_coasting(SynapticsPrivate *priv, struct SynapticsHwState *hw, edge_type ed
     priv->scroll_packet_count = 0;
 }
 
+static void
+stop_coasting(SynapticsPrivate *priv)
+{
+    priv->autoscroll_xspd = 0;
+    priv->autoscroll_yspd = 0;
+    priv->scroll_packet_count = 0;
+}
+
 static int
 HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw,
 		edge_type edge, Bool finger, struct ScrollData *sd)
@@ -1475,8 +1487,7 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw,
     sd->left = sd->right = sd->up = sd->down = 0;
 
     if (priv->synpara->touchpad_off == 2) {
-	priv->autoscroll_xspd = 0;
-	priv->autoscroll_yspd = 0;
+	stop_coasting(priv);
 	priv->circ_scroll_on = FALSE;
 	priv->vert_scroll_edge_on = FALSE;
 	priv->horiz_scroll_edge_on = FALSE;
@@ -1487,9 +1498,7 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw,
 
     /* scroll detection */
     if (finger && !priv->finger_state) {
-	priv->autoscroll_xspd = 0;
-	priv->autoscroll_yspd = 0;
-	priv->scroll_packet_count = 0;
+	stop_coasting(priv);
 	if (para->circular_scrolling) {
 	    if ((para->circular_trigger == 0 && edge) ||
 		(para->circular_trigger == 1 && edge & TOP_EDGE) ||
@@ -1571,18 +1580,40 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw,
 	    DBG(7, ErrorF("horiz edge scroll off\n"));
 	    priv->horiz_scroll_edge_on = FALSE;
 	}
-	if ((oldv || oldh) &&
+	/* If we were corner edge scrolling (coasting),
+	 * but no longer in corner or raised a finger, then stop coasting. */
+	if (para->scroll_edge_corner && (priv->autoscroll_xspd || priv->autoscroll_yspd)) {
+	    Bool is_in_corner =
+		((edge & RIGHT_EDGE)  && (edge & (TOP_EDGE | BOTTOM_EDGE))) ||
+		((edge & BOTTOM_EDGE) && (edge & (LEFT_EDGE | RIGHT_EDGE))) ;
+	    if (!is_in_corner || !finger) {
+		DBG(7, ErrorF("corner edge scroll off\n"));
+		stop_coasting(priv);
+	    }
+	}
+	/* if we were scrolling, but couldn't corner edge scroll,
+	 * and are no longer scrolling, then start coasting */
+	if ((oldv || oldh) && !para->scroll_edge_corner &&
 	    !(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 hitting a corner (top right or bottom right) while vertical
+     * scrolling is active, consider starting corner edge scrolling or
+     * switching over to circular scrolling smoothly */
     if (priv->vert_scroll_edge_on && !priv->horiz_scroll_edge_on &&
-	para->circular_scrolling) {
-	if ((edge & RIGHT_EDGE) && (edge & (TOP_EDGE | BOTTOM_EDGE))) {
+	(edge & RIGHT_EDGE) && (edge & (TOP_EDGE | BOTTOM_EDGE))) {
+	if (para->scroll_edge_corner) {
+	    if (priv->autoscroll_yspd == 0) {
+		/* FYI: We can generate multiple start_coasting requests if
+		 * we're in the corner, but we were moving so slowly when we
+		 * got here that we didn't actually start coasting. */
+		DBG(7, ErrorF("corner edge scroll on\n"));
+		start_coasting(priv, hw, edge, TRUE);
+	    }
+	} else if (para->circular_scrolling) {
 	    priv->vert_scroll_edge_on = FALSE;
 	    priv->circ_scroll_on = TRUE;
 	    priv->circ_scroll_vert = TRUE;
@@ -1592,8 +1623,16 @@ HandleScrolling(SynapticsPrivate *priv, struct SynapticsHwState *hw,
     }
     /* Same treatment for horizontal scrolling */
     if (priv->horiz_scroll_edge_on && !priv->vert_scroll_edge_on &&
-	para->circular_scrolling) {
-	if ((edge & BOTTOM_EDGE) && (edge & (LEFT_EDGE | RIGHT_EDGE))) {
+	(edge & BOTTOM_EDGE) && (edge & (LEFT_EDGE | RIGHT_EDGE))) {
+	if (para->scroll_edge_corner) {
+	    if (priv->autoscroll_xspd == 0) {
+		/* FYI: We can generate multiple start_coasting requests if
+		 * we're in the corner, but we were moving so slowly when we
+		 * got here that we didn't actually start coasting. */
+		DBG(7, ErrorF("corner edge scroll on\n"));
+		start_coasting(priv, hw, edge, FALSE);
+	    }
+	} else if (para->circular_scrolling) {
 	    priv->horiz_scroll_edge_on = FALSE;
 	    priv->circ_scroll_on = TRUE;
 	    priv->circ_scroll_vert = FALSE;
diff --git a/synaptics.h b/synaptics.h
index 225eeb9..f780849 100644
--- a/synaptics.h
+++ b/synaptics.h
@@ -64,6 +64,7 @@ typedef struct _SynapticsSHM
     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_edge_corner;		    /* Enable/disable continuous edge scrolling when in the corner */
     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 */
diff --git a/synclient.c b/synclient.c
index 3868658..aa5479c 100644
--- a/synclient.c
+++ b/synclient.c
@@ -68,6 +68,7 @@ static struct Parameter params[] = {
     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("CornerCoasting",       scroll_edge_corner,      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),

commit 80a10d7a097747fd6d7ab9806853e68601276334
Author: Peter Osterlund <petero2@telia.com>
Date:   Fri Jul 6 15:25:24 2007 +0200

    Update my copyright information.

diff --git a/alpscomm.c b/alpscomm.c
index 822d173..89d2a4a 100644
--- a/alpscomm.c
+++ b/alpscomm.c
@@ -1,7 +1,7 @@
 /* Copyright (C) 2001 Stefan Gmeiner <riddlebox@freesurf.ch>
  *
  * Copyright (c) 2003 Neil Brown <neilb@cse.unsw.edu.au>
- * Copyright (c) 2003-2004 Peter Osterlund <petero2@telia.com>
+ * Copyright (c) 2003-2005,2007 Peter Osterlund <petero2@telia.com>
  *
  *   This program is free software; you can redistribute it and/or
  *   modify it under the terms of the GNU General Public License
diff --git a/eventcomm.c b/eventcomm.c
index c4e0996..e3257cd 100644
--- a/eventcomm.c
+++ b/eventcomm.c
@@ -1,5 +1,5 @@
 /*
- *   Copyright 2004 Peter Osterlund <petero2@telia.com>
+ *   Copyright 2004-2007 Peter Osterlund <petero2@telia.com>
  *
  *   This program is free software; you can redistribute it and/or
  *   modify it under the terms of the GNU General Public License
diff --git a/synclient.c b/synclient.c
index ff73cd0..3868658 100644
--- a/synclient.c
+++ b/synclient.c
@@ -1,5 +1,5 @@
 /*
- *   Copyright 2002-2004 Peter Osterlund <petero2@telia.com>
+ *   Copyright 2002-2005,2007 Peter Osterlund <petero2@telia.com>
  *
  *   This program is free software; you can redistribute it and/or
  *   modify it under the terms of the GNU General Public License

commit 0ce431dc5291d95f4b3e78f9fb1c9e0be5de5abd
Author: Joseph P. Skudlarek <Jskud@briareus.(none)>
Date:   Fri Jul 6 15:07:01 2007 +0200

    Repair mismatch between driver and client regarding parameter names.

diff --git a/INSTALL b/INSTALL
index 2ccc112..91b6b67 100644
--- a/INSTALL
+++ b/INSTALL
@@ -53,7 +53,7 @@ Section "InputDevice"
   Driver	"synaptics"
   Option	"Device"		"/dev/psaux"
   Option	"Protocol"		"auto-dev"
-# enable SHMCOnfig if you want to enable synclient
+# enable SHMConfig if you want to enable synclient
 # NB: enabling SHMConfig is insecure, since any user can invoke it
 #  Option	 "SHMConfig"		 "on"
   Option	"LeftEdge"		"1700"
diff --git a/manpages/synaptics.5 b/manpages/synaptics.5
index 702d95f..14be846 100644
--- a/manpages/synaptics.5
+++ b/manpages/synaptics.5
@@ -203,12 +203,12 @@ If on, the left/right buttons generate button 6/7 events.
 .
 If off, the left/right buttons both generate button 2 events.
 .TP
-\fBUpDownRepeat\fR (Bool)
+\fBUpDownScrollRepeat\fR (Bool)
 If on, and the up/down buttons are used for scrolling
 (\fBUpDownScrolling\fR), these buttons will send auto-repeating 4/5 events,
 with the delay between repeats determined by \fBScrollButtonRepeat\fR.
 .TP
-\fBLeftRightRepeat\fR (Bool)
+\fBLeftRightScrollRepeat\fR (Bool)
 If on, and the left/right buttons are used for scrolling
 (\fBLeftRightScrolling\fR), these buttons will send auto-repeating 6/7 events,
 with the delay between repeats determined by \fBScrollButtonRepeat\fR.
diff --git a/synclient.c b/synclient.c
index 6bf3ed0..ff73cd0 100644
--- a/synclient.c
+++ b/synclient.c
@@ -81,8 +81,8 @@ static struct Parameter params[] = {
     DEFINE_PAR("EdgeMotionUseAlways",  edge_motion_use_always,  PT_BOOL,   0, 1),
     DEFINE_PAR("UpDownScrolling",      updown_button_scrolling, PT_BOOL,   0, 1),
     DEFINE_PAR("LeftRightScrolling",   leftright_button_scrolling, PT_BOOL,   0, 1),
-    DEFINE_PAR("UpDownRepeat",         updown_button_repeat,    PT_BOOL,   0, 1),
-    DEFINE_PAR("LeftRightRepeat",      leftright_button_repeat, PT_BOOL,   0, 1),
+    DEFINE_PAR("UpDownScrollRepeat",   updown_button_repeat,    PT_BOOL,   0, 1),
+    DEFINE_PAR("LeftRightScrollRepeat",leftright_button_repeat, PT_BOOL,   0, 1),
     DEFINE_PAR("ScrollButtonRepeat",   scroll_button_repeat,    PT_INT,    SBR_MIN , SBR_MAX),
     DEFINE_PAR("TouchpadOff",          touchpad_off,            PT_INT,    0, 2),
     DEFINE_PAR("GuestMouseOff",        guestmouse_off,          PT_BOOL,   0, 1),

commit f6ccc31c29c9dfefd033ec1c5be6fdc11206bffb
Author: Peter Osterlund <petero2@telia.com>
Date:   Sun Jun 3 22:27:45 2007 +0200

    Align the "synclient -l" output.

diff --git a/synclient.c b/synclient.c
index 1436121..6bf3ed0 100644
--- a/synclient.c
+++ b/synclient.c
@@ -137,13 +137,13 @@ show_settings(SynapticsSHM *synshm)
 	struct Parameter* par = &params[i];
 	switch (par->type) {
 	case PT_INT:
-	    printf("    %-20s = %d\n", par->name, *(int*)((char*)synshm + par->offset));
+	    printf("    %-23s = %d\n", par->name, *(int*)((char*)synshm + par->offset));
 	    break;
 	case PT_BOOL:
-	    printf("    %-20s = %d\n", par->name, *(Bool*)((char*)synshm + par->offset));
+	    printf("    %-23s = %d\n", par->name, *(Bool*)((char*)synshm + par->offset));
 	    break;
 	case PT_DOUBLE:
-	    printf("    %-20s = %g\n", par->name, *(double*)((char*)synshm + par->offset));
+	    printf("    %-23s = %g\n", par->name, *(double*)((char*)synshm + par->offset));
 	    break;
 	}
     }

commit cab78d760ddbd26511143cfd309cfa3120864472
Author: Joseph P. Skudlarek <Jskud@briareus.(none)>
Date:   Sun Jun 3 21:42:10 2007 +0200

    Documentation update.

diff --git a/INSTALL b/INSTALL
index 8fcf919..2ccc112 100644
--- a/INSTALL
+++ b/INSTALL
@@ -49,24 +49,26 @@ EndSection
    following lines:
 
 Section "InputDevice"
-  Identifier  	"Synaptics Mouse"
-  Driver  	"synaptics"
-  Option 	"Device"  	"/dev/psaux"
-  Option	"Protocol"	"auto-dev"
-  Option	"LeftEdge"      "1700"
-  Option	"RightEdge"     "5300"
-  Option	"TopEdge"       "1700"
-  Option	"BottomEdge"    "4200"
-  Option	"FingerLow"	"25"
-  Option	"FingerHigh"	"30"
-  Option	"MaxTapTime"	"180"
-  Option	"MaxTapMove"	"220"
-  Option	"VertScrollDelta" "100"
-  Option	"MinSpeed"	"0.09"
-  Option	"MaxSpeed"	"0.18"
-  Option	"AccelFactor"	"0.0015"
-  Option	"SHMConfig"	"on"
-#  Option	"Repeater"	"/dev/ps2mouse"
+  Identifier	"Synaptics Mouse"
+  Driver	"synaptics"
+  Option	"Device"		"/dev/psaux"
+  Option	"Protocol"		"auto-dev"
+# enable SHMCOnfig if you want to enable synclient
+# NB: enabling SHMConfig is insecure, since any user can invoke it
+#  Option	 "SHMConfig"		 "on"
+  Option	"LeftEdge"		"1700"
+  Option	"RightEdge"		"5300"
+  Option	"TopEdge"		"1700"
+  Option	"BottomEdge"		"4200"
+  Option	"FingerLow"		"25"
+  Option	"FingerHigh"		"30"
+  Option	"MaxTapTime"		"180"
+  Option	"MaxTapMove"		"220"
+  Option	"VertScrollDelta" 	"100"
+  Option	"MinSpeed"		"0.09"
+  Option	"MaxSpeed"		"0.18"
+  Option	"AccelFactor"		"0.0015"
+#  Option	"Repeater"		"/dev/ps2mouse"
 EndSection
 
 Change the Identifier to the same name as in the ServerLayout section.
diff --git a/README.alps b/README.alps
index fa6d038..206696f 100644
--- a/README.alps
+++ b/README.alps
@@ -12,13 +12,13 @@ touchpads, you probably have to change some parameter values. Here is
 an example InputDevice section for the X configuration file.
 
 Section "InputDevice"
-  Driver  	"synaptics"
-  Identifier  	"Mouse[1]"
-  Option	"Device"  		"/dev/psaux"
+  Driver	"synaptics"
+  Identifier	"Mouse[1]"
+  Option	"Device"		"/dev/psaux"
   Option	"Protocol"		"auto-dev"
 # enable SHMConfig if you want to enable synclient
 # NB: enabling SHMConfig is insecure, since any user can invoke it
-#  Option	"SHMConfig"		"on"
+#  Option	 "SHMConfig"		 "on"
   Option	"LeftEdge"		"120"
   Option	"RightEdge"		"830"
   Option	"TopEdge"		"120"
diff --git a/manpages/synaptics.5 b/manpages/synaptics.5
index 0304cf3..702d95f 100644
--- a/manpages/synaptics.5
+++ b/manpages/synaptics.5
@@ -61,7 +61,9 @@ The driver behavior can be configured with parameters.
 These parameters are options in the InputDevice section in the
 XOrg/XFree86 config file.
 .
-See the INSTALL file for a working example.
+See the INSTALL file for a working example for a synaptics touchpad.
+.
+See the README.alps file for a working example for an ALPS touchpad.
 .
 If you have the SHMConfig parameter enabled, these parameters can also
 be changed at runtime with the synclient(1) program.
@@ -506,8 +508,8 @@ region, which can be all edges, a particular side, or a particular
 corner.
 .
 Once scrolling is engaged, moving your finger in clockwise circles
-around the touchpad will generate scroll down events and counter
-clockwise scroll up events.
+around the center of the touchpad will generate scroll down events and
+counter clockwise motion will generate scroll up events.
 .
 Lifting your finger will disengage circular scrolling.
 .

commit b54890504a17916f6633d8069164a06e42824238
Author: Joseph P. Skudlarek <Jskud@briareus.(none)>
Date:   Mon May 28 12:25:39 2007 -0700

    Comment out SHMConfig, and explain that it is insecure.

diff --git a/README.alps b/README.alps
index 6a2314b..fa6d038 100644
--- a/README.alps
+++ b/README.alps
@@ -16,7 +16,9 @@ Section "InputDevice"
   Identifier  	"Mouse[1]"
   Option	"Device"  		"/dev/psaux"
   Option	"Protocol"		"auto-dev"
-  Option	"SHMConfig"		"on"
+# enable SHMConfig if you want to enable synclient
+# NB: enabling SHMConfig is insecure, since any user can invoke it
+#  Option	"SHMConfig"		"on"
   Option	"LeftEdge"		"120"
   Option	"RightEdge"		"830"
   Option	"TopEdge"		"120"

commit 2a946548ff6083edc3f300cb553ce45588f625ba
Author: Joseph P. Skudlarek <Jskud@briareus.(none)>
Date:   Mon May 28 12:23:47 2007 -0700

    Alsp documentation update.
    
    Fix typo in prose -- no longer need to set Device;
    augment example to suggest using shared memory, so can use synclient

diff --git a/README.alps b/README.alps
index ce807cb..6a2314b 100644
--- a/README.alps
+++ b/README.alps
@@ -16,6 +16,7 @@ Section "InputDevice"
   Identifier  	"Mouse[1]"
   Option	"Device"  		"/dev/psaux"
   Option	"Protocol"		"auto-dev"
+  Option	"SHMConfig"		"on"
   Option	"LeftEdge"		"120"
   Option	"RightEdge"		"830"
   Option	"TopEdge"		"120"
@@ -39,7 +40,7 @@ Section "InputDevice"
 EndSection
 
 If you use a 2.4 linux kernel, you don't need to patch the kernel, but
-you should instead set "Device" and "Protocol" like this:
+you should instead set "Protocol" like this:
 
   Option	"Protocol"		"alps"
 

commit 9a7ea338e558449aa62e152d7a79e8cb71224754
Author: Joseph P. Skudlarek <Jskud@briareus.(none)>
Date:   Mon May 28 11:26:14 2007 -0700

    Clarify that alps.patch file is not always needed.

diff --git a/FILES b/FILES
index a8db79b..d3d0624 100644
--- a/FILES
+++ b/FILES
@@ -9,5 +9,5 @@ script/usbmouse		script for shutting the touchpad down if
 			an external USB-mouse is attached
 syndaemon.c		A user space program that disables the touchpad
 			when the keyboard is used.
-alps.patch		Patch for 2.6 kernels that makes it possible to
+alps.patch		Patch for older 2.6 kernels that makes it possible to
 			use the driver with an ALPS GlidePoint device.
diff --git a/README.alps b/README.alps
index 1b63cb0..ce807cb 100644
--- a/README.alps
+++ b/README.alps
@@ -1,7 +1,8 @@
 It is possible to use this driver with an ALPS Glidepoint device. If
-you use a 2.6 linux kernel, you need to apply the ALPS kernel patch 
-in the alps.patch file. See http://www.kernelnewbies.org/faq/ for
-information about how to apply kernel patches and compile kernels.
+you use an older 2.6 linux kernel which has no ALPS input driver, you
+need to apply the ALPS kernel patch in the alps.patch file. See
+http://www.kernelnewbies.org/faq/ for information about how to apply
+kernel patches and compile kernels.
 
 Note! If you use kernel 2.6.11 or later, the alps patch is already
 included, so you don't have to patch your kernel.



Reply to: