Hello community,
here is the log from the commit of package x11-input-synaptics
checked in at Fri Sep 12 17:51:11 CEST 2008.
--------
--- x11-input-synaptics/x11-input-synaptics.changes 2008-09-08 04:10:22.000000000 +0200
+++ /mounts/work_src_done/STABLE/x11-input-synaptics/x11-input-synaptics.changes 2008-09-11 01:59:39.877754306 +0200
@@ -1,0 +2,14 @@
+Thu Sep 11 01:58:24 CEST 2008 - sndirsch@suse.de
+
+- xf86-input-synaptics 0.15.2
+ * Add sensible fdi default for bcm5974
+ * Optional: Set corner buttons to off by default
+ * Do not use stale option list pointers
+ * Don't crash when neither Path nor Device are given.
+ * Don't lose button up event if timeout is cancelled in the same
+ ReadInput cycle
+ * Pre-probe the device (eventcomm only).
+ * Improve edge autodetection and accel.
+ * Claim that we are a XI_TOUCHPAD, not a mouse.
+
+-------------------------------------------------------------------
Old:
----
xf86-input-synaptics-0.15.1.tar.bz2
New:
----
xf86-input-synaptics-0.15.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ x11-input-synaptics.spec ++++++
--- /var/tmp/diff_new_pack.r26025/_old 2008-09-12 17:51:04.000000000 +0200
+++ /var/tmp/diff_new_pack.r26025/_new 2008-09-12 17:51:04.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package x11-input-synaptics (Version 0.15.1)
+# spec file for package x11-input-synaptics (Version 0.15.2)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -27,7 +27,7 @@
License: X11/MIT
Group: System/X11/Servers/XF86_4
AutoReqProv: on
-Version: 0.15.1
+Version: 0.15.2
Release: 1
Summary: X11 input module for synaptics touchpad
Provides: xorg-x11-server:/usr/X11R6/%{_lib}/modules/input/synaptics_drv.o
@@ -72,7 +72,7 @@
Group: System/X11/Servers/XF86_4
AutoReqProv: on
Version: 031126
-Release: 262
+Release: 264
%description -n x11-input-gunze
X11 input module for gunze touchscreen
@@ -91,7 +91,7 @@
Requires: x11-input-gunze = %{version}-%{release}
AutoReqProv: on
Version: 031126
-Release: 262
+Release: 264
%description -n x11-input-gunze-tools
Tools to configure and calibrate gunze X11 input driver.
@@ -104,7 +104,7 @@
Chris Howe
%prep
-%setup -n xf86-input-synaptics-0.15.1 -b1 -b2
+%setup -n xf86-input-synaptics-0.15.2 -b1 -b2
%patch3
pushd ../programs/Xserver/hw/xfree86/input/gunze
patch -p0 -s < $RPM_SOURCE_DIR/xorg_gunze.diff
@@ -180,6 +180,17 @@
/usr/bin/gunzets_calib
%changelog
+* Thu Sep 11 2008 sndirsch@suse.de
+- xf86-input-synaptics 0.15.2
+ * Add sensible fdi default for bcm5974
+ * Optional: Set corner buttons to off by default
+ * Do not use stale option list pointers
+ * Don't crash when neither Path nor Device are given.
+ * Don't lose button up event if timeout is cancelled in the same
+ ReadInput cycle
+ * Pre-probe the device (eventcomm only).
+ * Improve edge autodetection and accel.
+ * Claim that we are a XI_TOUCHPAD, not a mouse.
* Mon Sep 08 2008 sndirsch@suse.de
- xf86-input-synaptics 0.15.1
* Add .fdi file from gentoo (also used by pld)
++++++ wait.diff ++++++
--- /var/tmp/diff_new_pack.r26025/_old 2008-09-12 17:51:04.000000000 +0200
+++ /var/tmp/diff_new_pack.r26025/_new 2008-09-12 17:51:04.000000000 +0200
@@ -19,9 +19,9 @@
- local->name, fname);
+ xf86Msg(X_PROBED, "%s auto-dev sets device to %s (waited %d msec)\n",
+ local->name, fname, wait);
- xf86ReplaceStrOption(local->options, "Device", fname);
+ local->options =
+ xf86ReplaceStrOption(local->options, "Device", fname);
event_query_axis_ranges(fd, local);
- }
@@ -347,6 +350,13 @@ EventAutoDevProbe(LocalDevicePtr local)
}
free(namelist[i]);
++++++ xf86-input-synaptics-0.15.1.tar.bz2 -> xf86-input-synaptics-0.15.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/configure new/xf86-input-synaptics-0.15.2/configure
--- old/xf86-input-synaptics-0.15.1/configure 2008-09-07 11:35:31.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/configure 2008-09-10 20:54:57.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.62 for xf86-input-synaptics 0.15.1.
+# Generated by GNU Autoconf 2.62 for xf86-input-synaptics 0.15.2.
#
# Report bugs to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg.
#
@@ -745,8 +745,8 @@
# Identity of this package.
PACKAGE_NAME='xf86-input-synaptics'
PACKAGE_TARNAME='xf86-input-synaptics'
-PACKAGE_VERSION='0.15.1'
-PACKAGE_STRING='xf86-input-synaptics 0.15.1'
+PACKAGE_VERSION='0.15.2'
+PACKAGE_STRING='xf86-input-synaptics 0.15.2'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
ac_unique_file="Makefile.am"
@@ -1497,7 +1497,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xf86-input-synaptics 0.15.1 to adapt to many kinds of systems.
+\`configure' configures xf86-input-synaptics 0.15.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1568,7 +1568,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xf86-input-synaptics 0.15.1:";;
+ short | recursive ) echo "Configuration of xf86-input-synaptics 0.15.2:";;
esac
cat <<\_ACEOF
@@ -1679,7 +1679,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xf86-input-synaptics configure 0.15.1
+xf86-input-synaptics configure 0.15.2
generated by GNU Autoconf 2.62
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1693,7 +1693,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xf86-input-synaptics $as_me 0.15.1, which was
+It was created by xf86-input-synaptics $as_me 0.15.2, which was
generated by GNU Autoconf 2.62. Invocation command line was
$ $0 $@
@@ -2409,7 +2409,7 @@
# Define the identity of the package.
PACKAGE='xf86-input-synaptics'
- VERSION='0.15.1'
+ VERSION='0.15.2'
cat >>confdefs.h <<_ACEOF
@@ -13099,7 +13099,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xf86-input-synaptics $as_me 0.15.1, which was
+This file was extended by xf86-input-synaptics $as_me 0.15.2, which was
generated by GNU Autoconf 2.62. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -13152,7 +13152,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-xf86-input-synaptics config.status 0.15.1
+xf86-input-synaptics config.status 0.15.2
configured by $0, generated by GNU Autoconf 2.62,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/configure.ac new/xf86-input-synaptics-0.15.2/configure.ac
--- old/xf86-input-synaptics-0.15.1/configure.ac 2008-09-07 11:34:17.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/configure.ac 2008-09-10 20:54:40.000000000 +0200
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-input-synaptics],
- 0.15.1,
+ 0.15.2,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-input-synaptics)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/fdi/11-x11-synaptics.fdi new/xf86-input-synaptics-0.15.2/fdi/11-x11-synaptics.fdi
--- old/xf86-input-synaptics-0.15.1/fdi/11-x11-synaptics.fdi 2008-09-07 11:29:52.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/fdi/11-x11-synaptics.fdi 2008-09-10 20:50:29.000000000 +0200
@@ -18,6 +18,40 @@
</match>
<match key="info.product" contains="bcm5974">
<merge key="input.x11_driver" type="string">synaptics</merge>
+ <merge key="input.x11_options.SHMConfig" type="string">true</merge>
+ <merge key="input.x11_options.LeftEdge" type="string">0</merge>
+ <merge key="input.x11_options.RightEdge" type="string">1280</merge>
+ <merge key="input.x11_options.TopEdge" type="string">0</merge>
+ <merge key="input.x11_options.BottomEdge" type="string">800</merge>
+ <merge key="input.x11_options.ClickFinger1" type="string">1</merge>
+ <merge key="input.x11_options.ClickFinger2" type="string">3</merge>
+ <merge key="input.x11_options.ClickFinger3" type="string">2</merge>
+ <merge key="input.x11_options.HorizEdgeScroll" type="string">0</merge>
+ <merge key="input.x11_options.VertEdgeScroll" type="string">0</merge>
+ <merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
+ <merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
+ <merge key="input.x11_options.HorizScrollDelta" type="string">0</merge>
+ <merge key="input.x11_options.VertScrollDelta" type="string">40</merge>
+ <merge key="input.x11_options.PressureMotionMinZ" type="string">10</merge>
+ <merge key="input.x11_options.FingerLow" type="string">16</merge>
+ <merge key="input.x11_options.FingerHigh" type="string">80</merge>
+ <merge key="input.x11_options.FingerPress" type="string">256</merge>
+ <merge key="input.x11_options.PalmDetect" type="string">0</merge>
+ <merge key="input.x11_options.PalmMinWidth" type="string">10</merge>
+ <merge key="input.x11_options.PalmMinZ" type="string">200</merge>
+ <merge key="input.x11_options.MinSpeed" type="string">0.8</merge>
+ <merge key="input.x11_options.MaxSpeed" type="string">1.2</merge>
+ <merge key="input.x11_options.AccelFactor" type="string">0.10</merge>
+ <merge key="input.x11_options.MaxTapMove" type="string">25</merge>
+ <merge key="input.x11_options.MaxTapTime" type="string">223</merge>
+ <merge key="input.x11_options.MaxDoubleTapTime" type="string">200</merge>
+ <merge key="input.x11_options.TapButton1" type="string">0</merge>
+ <merge key="input.x11_options.TapButton2" type="string">0</merge>
+ <merge key="input.x11_options.TapButton3" type="string">0</merge>
+ <merge key="input.x11_options.RTCornerButton" type="string">0</merge>
+ <merge key="input.x11_options.RBCornerButton" type="string">0</merge>
+ <merge key="input.x11_options.LTCornerButton" type="string">0</merge>
+ <merge key="input.x11_options.LBCornerButton" type="string">0</merge>
</match>
</match>
</device>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/alpscomm.c new/xf86-input-synaptics-0.15.2/src/alpscomm.c
--- old/xf86-input-synaptics-0.15.1/src/alpscomm.c 2008-07-11 19:46:17.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/alpscomm.c 2008-09-10 20:47:32.000000000 +0200
@@ -262,5 +262,6 @@
ALPSDeviceOffHook,
ALPSQueryHardware,
ALPSReadHwState,
- ALPSAutoDevProbe
+ ALPSAutoDevProbe,
+ NULL /* ProbeDevice */
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/eventcomm.c new/xf86-input-synaptics-0.15.2/src/eventcomm.c
--- old/xf86-input-synaptics-0.15.1/src/eventcomm.c 2008-08-14 23:59:20.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/eventcomm.c 2008-09-10 20:51:45.000000000 +0200
@@ -108,11 +108,11 @@
return TRUE;
}
-/* Query device for axis ranges and store outcome in the default parameter. */
+/* Query device for axis ranges */
static void
event_query_axis_ranges(int fd, LocalDevicePtr local)
{
- SynapticsSHM *pars = &((SynapticsPrivate *)local->private)->synpara_default;
+ SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
struct input_absinfo abs;
int rc;
@@ -121,8 +121,8 @@
{
xf86Msg(X_INFO, "%s: x-axis range %d - %d\n", local->name,
abs.minimum, abs.maximum);
- pars->left_edge = abs.minimum;
- pars->right_edge = abs.maximum;
+ priv->minx = abs.minimum;
+ priv->maxx = abs.maximum;
} else
xf86Msg(X_ERROR, "%s: failed to query axis range (%s)\n", local->name,
strerror(errno));
@@ -132,8 +132,8 @@
{
xf86Msg(X_INFO, "%s: y-axis range %d - %d\n", local->name,
abs.minimum, abs.maximum);
- pars->top_edge = abs.minimum;
- pars->bottom_edge = abs.maximum;
+ priv->miny = abs.minimum;
+ priv->maxy = abs.maximum;
} else
xf86Msg(X_ERROR, "%s: failed to query axis range (%s)\n", local->name,
strerror(errno));
@@ -305,6 +305,31 @@
return strncmp(EVENT_DEV_NAME, dir->d_name, 5) == 0;
}
+/**
+ * Probe the given device name for axis ranges, if appropriate.
+ */
+static Bool
+EventProbeDevice(LocalDevicePtr local, char* device)
+{
+ int fd;
+
+ SYSCALL(fd = open(device, O_RDONLY));
+ if (fd < 0)
+ goto out;
+
+ if (!event_query_is_touchpad(fd))
+ goto out;
+
+ event_query_axis_ranges(fd, local);
+
+out:
+ if (fd >= 0)
+ SYSCALL(close(fd));
+
+ /* Always return TRUE, PreInit will complain for us if necessary */
+ return TRUE;
+}
+
static Bool
EventAutoDevProbe(LocalDevicePtr local)
{
@@ -340,7 +365,8 @@
touchpad_found = TRUE;
xf86Msg(X_PROBED, "%s auto-dev sets device to %s\n",
local->name, fname);
- xf86ReplaceStrOption(local->options, "Device", fname);
+ local->options =
+ xf86ReplaceStrOption(local->options, "Device", fname);
event_query_axis_ranges(fd, local);
}
SYSCALL(close(fd));
@@ -361,5 +387,6 @@
EventDeviceOffHook,
EventQueryHardware,
EventReadHwState,
- EventAutoDevProbe
+ EventAutoDevProbe,
+ EventProbeDevice
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/ps2comm.c new/xf86-input-synaptics-0.15.2/src/ps2comm.c
--- old/xf86-input-synaptics-0.15.1/src/ps2comm.c 2008-07-11 19:49:57.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/ps2comm.c 2008-09-10 20:47:32.000000000 +0200
@@ -758,5 +758,6 @@
PS2DeviceOffHook,
PS2QueryHardware,
PS2ReadHwState,
- PS2AutoDevProbe
+ PS2AutoDevProbe,
+ NULL /* ProbeDevice */
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/psmcomm.c new/xf86-input-synaptics-0.15.2/src/psmcomm.c
--- old/xf86-input-synaptics-0.15.1/src/psmcomm.c 2008-07-14 20:38:26.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/psmcomm.c 2008-09-10 20:47:32.000000000 +0200
@@ -177,5 +177,6 @@
PSMDeviceOffHook,
PSMQueryHardware,
PSMReadHwState,
- PSMAutoDevProbe
+ PSMAutoDevProbe,
+ NULL /* ProbeDevice */
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/synaptics.c new/xf86-input-synaptics-0.15.2/src/synaptics.c
--- old/xf86-input-synaptics-0.15.1/src/synaptics.c 2008-09-07 11:29:53.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/synaptics.c 2008-09-10 20:53:29.000000000 +0200
@@ -13,6 +13,7 @@
* Copyright � 2006 Christian Thaeter
* Copyright � 2007 Joseph P. Skudlarek
* Copyright � 2008 Fedor P. Goncharov
+ * Copyright � 2008 Red Hat, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without
@@ -176,12 +177,16 @@
device = xf86FindOptionValue(local->options, "Device");
if (!device) {
device = xf86FindOptionValue(local->options, "Path");
- xf86ReplaceStrOption(local->options, "Device", device);
+ if (device) {
+ local->options =
+ xf86ReplaceStrOption(local->options, "Device", device);
+ }
}
if (device && strstr(device, "/dev/input/event")) {
#ifdef BUILD_EVENTCOMM
- /* trust the device name if we've been given one */
- proto = SYN_PROTO_EVENT;
+ if (event_proto_operations.ProbeDevice &&
+ event_proto_operations.ProbeDevice(local, device))
+ proto = SYN_PROTO_EVENT;
#endif
} else {
str_par = xf86FindOptionValue(local->options, "Protocol");
@@ -306,6 +311,10 @@
char *repeater;
pointer opts;
int status;
+ float minSpeed, maxSpeed;
+ int horizScrollDelta, vertScrollDelta,
+ edgeMotionMinSpeed, edgeMotionMaxSpeed;
+ int l, r, t, b; /* left, right, top, bottom */
/* allocate memory for SynapticsPrivateRec */
priv = xcalloc(1, sizeof(SynapticsPrivate));
@@ -321,7 +330,7 @@
/* initialize the InputInfoRec */
local->name = dev->identifier;
- local->type_name = XI_MOUSE; /* XI_TOUCHPAD and KDE killed the X Server at startup ? */
+ local->type_name = XI_TOUCHPAD;
local->device_control = DeviceControl;
local->read_input = ReadInput;
local->control_proc = ControlProc;
@@ -344,20 +353,13 @@
xf86CollectInputOptions(local, NULL, NULL);
- opts = local->options;
-
- xf86OptionListReport(opts);
-
- /* set hard-coded axis ranges before querying the device.
- * These defaults are overwritten with the ones provided by the device
- * during SetDeviceAndProtocol (if applicable). */
- priv->synpara_default.left_edge = 1900;
- priv->synpara_default.right_edge = 5400;
- priv->synpara_default.top_edge = 1900;
- priv->synpara_default.bottom_edge = 4000;
+ xf86OptionListReport(local->options);
+ /* may change local->options */
SetDeviceAndProtocol(local);
+ opts = local->options;
+
/* open the touchpad device */
local->fd = xf86OpenSerial(opts);
if (local->fd == -1) {
@@ -382,11 +384,58 @@
/* read the parameters */
pars = &priv->synpara_default;
pars->version = (PACKAGE_VERSION_MAJOR*10000+PACKAGE_VERSION_MINOR*100+PACKAGE_VERSION_PATCHLEVEL);
- /* pars->xyz_edge contains defaults or values reported by hardware*/
- pars->left_edge = xf86SetIntOption(opts, "LeftEdge", pars->left_edge);
- pars->right_edge = xf86SetIntOption(opts, "RightEdge", pars->right_edge);
- pars->top_edge = xf86SetIntOption(opts, "TopEdge", pars->top_edge);
- pars->bottom_edge = xf86SetIntOption(opts, "BottomEdge", pars->bottom_edge);
+
+ /* The synaptics specs specify typical edge widths of 4% on x, and 5.4% on
+ * y (page 7) [Synaptics TouchPad Interfacing Guide, 510-000080 - A
+ * Second Edition, http://www.synaptics.com/support/dev_support.cfm, 8 Sep
+ * 2008]
+ * If the range was autodetected, apply these edge widths to all four
+ * sides.
+ */
+ if (priv->maxx && priv->maxy)
+ {
+ int width, height;
+ int ewidth, eheight; /* edge width/height */
+
+ width = abs(priv->maxx - priv->minx);
+ height = abs(priv->maxy - priv->miny);
+ ewidth = width * .04;
+ eheight = height * .055;
+
+ l = priv->minx + ewidth;
+ r = priv->maxx - ewidth;
+ t = priv->miny + eheight;
+ b = priv->maxy - eheight;
+
+ /* Default min/max speed are 0.09/0.18. Assuming we have a device that
+ * reports height 3040 (typical y range in synaptics specs) this gives
+ * us the same result. */
+ minSpeed = 273.0/height;
+ maxSpeed = 547.0/height;
+
+ /* Again, based on typical x/y range and defaults */
+ horizScrollDelta = width * .025;
+ vertScrollDelta = height * .04;
+ edgeMotionMinSpeed = 1;
+ edgeMotionMaxSpeed = width * .1;
+ } else {
+ l = 1900;
+ r = 5400;
+ t = 1900;
+ b = 4000;
+ minSpeed = 0.09;
+ maxSpeed = 0.18;
+
+ horizScrollDelta = 100;
+ vertScrollDelta = 100;
+ edgeMotionMinSpeed = 1;
+ edgeMotionMaxSpeed = 400;
+ }
+
+ pars->left_edge = xf86SetIntOption(opts, "LeftEdge", l);
+ pars->right_edge = xf86SetIntOption(opts, "RightEdge", r);
+ pars->top_edge = xf86SetIntOption(opts, "TopEdge", t);
+ pars->bottom_edge = xf86SetIntOption(opts, "BottomEdge", b);
pars->finger_low = xf86SetIntOption(opts, "FingerLow", 25);
pars->finger_high = xf86SetIntOption(opts, "FingerHigh", 30);
@@ -398,8 +447,8 @@
pars->fast_taps = xf86SetIntOption(opts, "FastTaps", FALSE);
pars->emulate_mid_button_time = xf86SetIntOption(opts, "EmulateMidButtonTime", 75);
pars->emulate_twofinger_z = xf86SetIntOption(opts, "EmulateTwoFingerMinZ", 257);
- pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", 100);
- pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", 100);
+ pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", horizScrollDelta);
+ pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", vertScrollDelta);
pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", TRUE);
pars->special_scroll_area_right = xf86SetBoolOption(opts, "SpecialScrollAreaRight", TRUE);
pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", TRUE);
@@ -408,8 +457,8 @@
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_min_speed = xf86SetIntOption(opts, "EdgeMotionMinSpeed", edgeMotionMinSpeed);
+ pars->edge_motion_max_speed = xf86SetIntOption(opts, "EdgeMotionMaxSpeed", edgeMotionMaxSpeed);
pars->edge_motion_use_always = xf86SetBoolOption(opts, "EdgeMotionUseAlways", FALSE);
repeater = xf86SetStrOption(opts, "Repeater", NULL);
pars->updown_button_scrolling = xf86SetBoolOption(opts, "UpDownScrolling", TRUE);
@@ -421,8 +470,8 @@
pars->guestmouse_off = xf86SetBoolOption(opts, "GuestMouseOff", FALSE);
pars->locked_drags = xf86SetBoolOption(opts, "LockedDrags", FALSE);
pars->locked_drag_time = xf86SetIntOption(opts, "LockedDragTimeout", 5000);
- pars->tap_action[RT_TAP] = xf86SetIntOption(opts, "RTCornerButton", 2);
- pars->tap_action[RB_TAP] = xf86SetIntOption(opts, "RBCornerButton", 3);
+ pars->tap_action[RT_TAP] = xf86SetIntOption(opts, "RTCornerButton", 0);
+ pars->tap_action[RB_TAP] = xf86SetIntOption(opts, "RBCornerButton", 0);
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);
@@ -441,8 +490,8 @@
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->min_speed = synSetFloatOption(opts, "MinSpeed", minSpeed);
+ pars->max_speed = synSetFloatOption(opts, "MaxSpeed", maxSpeed);
pars->accl = synSetFloatOption(opts, "AccelFactor", 0.0015);
pars->trackstick_speed = synSetFloatOption(opts, "TrackstickSpeed", 40);
pars->scroll_dist_circ = synSetFloatOption(opts, "CircScrollDelta", 0.1);
@@ -877,6 +926,8 @@
while (!done) {
switch (priv->mid_emu_state) {
+ case MBE_LEFT_CLICK:
+ case MBE_RIGHT_CLICK:
case MBE_OFF:
priv->button_delay_millis = hw->millis;
if (hw->left) {
@@ -892,7 +943,12 @@
hw->millis);
if (timeleft > 0)
*delay = MIN(*delay, timeleft);
- if (!hw->left || (timeleft <= 0)) {
+
+ /* timeout, but within the same ReadInput cycle! */
+ if ((timeleft <= 0) && !hw->left) {
+ priv->mid_emu_state = MBE_LEFT_CLICK;
+ done = TRUE;
+ } else if ((!hw->left) || (timeleft <= 0)) {
hw->left = TRUE;
priv->mid_emu_state = MBE_TIMEOUT;
done = TRUE;
@@ -908,7 +964,12 @@
hw->millis);
if (timeleft > 0)
*delay = MIN(*delay, timeleft);
- if (!hw->right || (timeleft <= 0)) {
+
+ /* timeout, but within the same ReadInput cycle! */
+ if ((timeleft <= 0) && !hw->right) {
+ priv->mid_emu_state = MBE_RIGHT_CLICK;
+ done = TRUE;
+ } else if (!hw->right || (timeleft <= 0)) {
hw->right = TRUE;
priv->mid_emu_state = MBE_TIMEOUT;
done = TRUE;
@@ -1918,6 +1979,18 @@
if (dx || dy)
xf86PostMotionEvent(local->dev, 0, 0, 2, dx, dy);
+ if (priv->mid_emu_state == MBE_LEFT_CLICK)
+ {
+ xf86PostButtonEvent(local->dev, FALSE, 1, 1, 0, 0);
+ xf86PostButtonEvent(local->dev, FALSE, 1, 0, 0, 0);
+ priv->mid_emu_state = MBE_OFF;
+ } else if (priv->mid_emu_state == MBE_RIGHT_CLICK)
+ {
+ xf86PostButtonEvent(local->dev, FALSE, 3, 1, 0, 0);
+ xf86PostButtonEvent(local->dev, FALSE, 3, 0, 0, 0);
+ priv->mid_emu_state = MBE_OFF;
+ }
+
change = buttons ^ priv->lastButtons;
while (change) {
id = ffs(change); /* number of first set bit 1..32 is returned */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/synapticsstr.h new/xf86-input-synaptics-0.15.2/src/synapticsstr.h
--- old/xf86-input-synaptics-0.15.1/src/synapticsstr.h 2008-08-14 23:09:13.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/synapticsstr.h 2008-09-10 20:47:32.000000000 +0200
@@ -54,7 +54,9 @@
MBE_RIGHT, /* Right button pressed, waiting for left button or timeout */
MBE_MID, /* Left and right buttons pressed, waiting for both buttons
to be released */
- MBE_TIMEOUT /* Waiting for both buttons to be released. */
+ MBE_TIMEOUT, /* Waiting for both buttons to be released. */
+ MBE_LEFT_CLICK, /* Emulate left button click. */
+ MBE_RIGHT_CLICK, /* Emulate right button click. */
};
/* See docs/tapndrag.dia for a state machine diagram */
@@ -137,6 +139,7 @@
int prev_z; /* previous z value, for palm detection */
int avg_width; /* weighted average of previous fingerWidth values */
+ int minx, maxx, miny, maxy; /* min/max dimensions as detected */
} SynapticsPrivate;
#endif /* _SYNAPTICSSTR_H_ */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xf86-input-synaptics-0.15.1/src/synproto.h new/xf86-input-synaptics-0.15.2/src/synproto.h
--- old/xf86-input-synaptics-0.15.1/src/synproto.h 2008-07-14 20:37:01.000000000 +0200
+++ new/xf86-input-synaptics-0.15.2/src/synproto.h 2008-09-10 20:47:32.000000000 +0200
@@ -96,6 +96,7 @@
struct SynapticsProtocolOperations *proto_ops,
struct CommData *comm, struct SynapticsHwState *hwRet);
Bool (*AutoDevProbe)(LocalDevicePtr local);
+ Bool (*ProbeDevice)(LocalDevicePtr local, char* name);
};
extern struct SynapticsProtocolOperations psaux_proto_operations;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org