Hello community,
here is the log from the commit of package xf86-input-synaptics for
openSUSE:Factory checked in at 2014-05-10 08:31:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-input-synaptics (Old)
and /work/SRC/openSUSE:Factory/.xf86-input-synaptics.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xf86-input-synaptics"
Changes:
--------
---
/work/SRC/openSUSE:Factory/xf86-input-synaptics/xf86-input-synaptics.changes
2014-03-22 19:46:07.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.xf86-input-synaptics.new/xf86-input-synaptics.changes
2014-05-10 08:32:03.000000000 +0200
@@ -1,0 +2,18 @@
+Wed May 7 10:36:16 UTC 2014 - [email protected]
+
+- Update to version 1.7.99.2
+ * The second snapshot for synaptics 1.8 is now available. Note
+ that there are are two significant changes:
+ - the event device is not grabbed anymore. In some setups this
+ may lead to duplicate events but where it does you're really
+ better off using an InputClass instead of an InputDevice
+ section in your xorg.conf.
+ - the secondary software button area (i.e. the top software
+ buttons on the Lenovo *40 series) is now automatically
+ enabled based on the INPUT_PROP_TOPBUTTONPAD property,
+ slated for kernel 3.15. No more PNPID matching in the
+ snippets, which didn't work without a kernel patch anyway.
+ If you can't update the kernel, use Option
+ "HasSecondarySoftButtons" "on".
+
+-------------------------------------------------------------------
Old:
----
xf86-input-synaptics-1.7.99.1.tar.bz2
New:
----
xf86-input-synaptics-1.7.99.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xf86-input-synaptics.spec ++++++
--- /var/tmp/diff_new_pack.Mqut5b/_old 2014-05-10 08:32:04.000000000 +0200
+++ /var/tmp/diff_new_pack.Mqut5b/_new 2014-05-10 08:32:04.000000000 +0200
@@ -17,7 +17,7 @@
Name: xf86-input-synaptics
-Version: 1.7.99.1
+Version: 1.7.99.2
Release: 0
Summary: Synaptics touchpad input driver for the Xorg X server
License: MIT
++++++ xf86-input-synaptics-1.7.99.1.tar.bz2 ->
xf86-input-synaptics-1.7.99.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/ChangeLog
new/xf86-input-synaptics-1.7.99.2/ChangeLog
--- old/xf86-input-synaptics-1.7.99.1/ChangeLog 2014-03-17 22:32:13.000000000
+0100
+++ new/xf86-input-synaptics-1.7.99.2/ChangeLog 2014-04-30 03:45:03.000000000
+0200
@@ -1,3 +1,167 @@
+commit a31ecb669f40d8db3ab1867eaedfe364bbd6fafe
+Author: Peter Hutterer <[email protected]>
+Date: Wed Apr 30 07:45:34 2014 +1000
+
+ synaptics 1.7.99.2
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit efa424b5c9c084c1c1136a68329709c7dc9ddfda
+Author: Clinton Sprain <[email protected]>
+Date: Tue Apr 29 19:47:17 2014 -0500
+
+ Fix product ID cutoff for MODEL_APPLETOUCH/MODEL_UNIBODY_MACBOOK
+
+ Some Macbooks are being tagged as MODEL_UNIBODY_MACBOOKs when they should
not
+ be. This causes the default sensitivity to be very low for them, making the
+ touchpad almost unusable. This change puts those devices into the correct
+ bucket again.
+
+ Signed-off-by: Clinton Sprain <[email protected]>
+ Reviewed-by: Peter Hutterer <[email protected]>
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 7bf27568417691e772e715f8fc6c30ea7ec892d6
+Author: Hans de Goede <[email protected]>
+Date: Tue Apr 22 18:58:11 2014 +0200
+
+ Add support for INPUT_PROP_TOPBUTTONPAD
+
+ Add a HasSecondaryButtons boolean config option which defaults to true for
+ devices with the INPUT_PROP_TOPBUTTONPAD and false for all other devices.
+
+ Only parse the SecondarySoftButtonAreas when this option is true,
effectively
+ disabling the top buttons when it is false. Likewise, only initialize the
+ SecondarySoftButtonAreas property if we enable support for it.
+
+ This means that it is now safe to always set a SecondarySoftButtonAreas
+ default in 50-synaptics.conf, and that he section which was intended for
+ use with future pnp-id matching can be dropped, as that is now all handled
+ in the kernel.
+
+ While at also remove the comment about disabling the bottom edge area, as
that
+ is now done automatically.
+
+ Signed-off-by: Hans de Goede <[email protected]>
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
+commit 41afac2abf12dd74a171f726b57014f7fb266957
+Author: Peter Hutterer <[email protected]>
+Date: Tue Apr 29 12:13:10 2014 +1000
+
+ man: add some missing quotes
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit a6f0f4c9a5bcb0e25343dd4c59d4cc47cc5e8006
+Author: Hans de Goede <[email protected]>
+Date: Fri Apr 11 20:41:36 2014 +0200
+
+ Always count tripletap + click as 3 fingerclick on pads with < 3 touches
+
+ When trying to do a 3 fingerclick on a touchpad which only tracks 2
touches,
+ this may register as a 3 or 2 fingerclick depending on the order in which
+ the touchpad detects the fingers. If the 2 outer fingers of the 3 get seen
+ first, then the 2 touches will be too far apart for the heuristic to see
+ them as being close together, and the click gets counted as a 2 finger
click.
+
+ A user will likely never do a 2 finger click with a 3th finger resting
+ somewhere else on the pad, where-as the above misdetection of the clicks is
+ a real issue, so simply always count a click with trippletap set as a
+ 3 finger click on pads which track less then 3 touches.
+
+ https://bugzilla.redhat.com/show_bug.cgi?id=1086218
+
+ Signed-off-by: Hans de Goede <[email protected]>
+ Reviewed-by: Peter Hutterer <[email protected]>
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit f183c1c38778b659b4c75a0e2c532dd5a9f8d437
+Author: Peter Hutterer <[email protected]>
+Date: Wed Apr 9 10:41:29 2014 +1000
+
+ conf: add more PnPIDs and DMI matches for Lenovos
+
+ And expand DMI strings to more precise matches
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
+commit 62ef210d11714703345dc8d35915ff53c37aee01
+Author: Peter Hutterer <[email protected]>
+Date: Mon Apr 7 16:16:13 2014 +1000
+
+ Comment the touch states
+
+ Everytime I look at this I get confused about OPEN_EMPTY vs EMPTY. Let's
fix
+ that.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
+commit bfceb1bc580656aceb14e4b0f880bfcb3e4bc368
+Author: Peter Hutterer <[email protected]>
+Date: Fri Apr 4 15:51:22 2014 +1000
+
+ eventcomm: Hook up the libevdev log handler
+
+ This is a bit problematic: libevdev only has one global log handler.
+ So if we have another driver use libevdev, we'll either overwrite that
handler
+ or get overwritten, whichever comes first. So we need to re-set the handler
+ every time we get an event to make sure we log through our handler.
+ Likewise, if we ever drop the device, we need to unset the log handler
back to
+ NULL because we may unload the module and our handler may disappear.
+
+ Use the lowest logging priority, let the server filter based on the
verbosity
+ level instead.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
+commit 6ad856790630393bbd41b0bd7746ed9b0629a7c6
+Author: Peter Hutterer <[email protected]>
+Date: Thu Apr 3 16:41:15 2014 +1000
+
+ eventcomm: read one more event after finishing a sync
+
+ Once the sync finishes, we get -EAGAIN. This only indicates the sync is
done,
+ but some events may still be waiting in the pipe for us to read. We must
read
+ those now, otherwise select may not trigger on further data.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
+commit bec41416dbbee73eef9eee122d0acacc148e329d
+Author: Peter Hutterer <[email protected]>
+Date: Thu Apr 3 15:42:45 2014 +1000
+
+ eventcomm: drop superflous helper function
+
+ last_mt_vals_slot is only used in one location and there we can just use
+ cur_slot
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
+commit f1948e08ee9894864254a18098e4f4fceb6e322f
+Author: Peter Hutterer <[email protected]>
+Date: Wed Mar 19 15:08:15 2014 +1000
+
+ Disable GrabEventDevice by default
+
+ This was required when we started supporting hotplugging to avoid duplicate
+ events. These days the drawback of not being able to record events in the
case
+ of a bug is significant.
+
+ Check the configuration source on init. If the device was hotplugged
through a
+ a server config backend, disable the grab. If the device was statically
+ configured through an xorg.conf then leave the default grab enabled to
avoid
+ a duplicate device.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Hans de Goede <[email protected]>
+
commit fd709900445e3cb9f31ce7e780bfa98ecb6dab9b
Author: Peter Hutterer <[email protected]>
Date: Tue Mar 18 07:28:44 2014 +1000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/xf86-input-synaptics-1.7.99.1/conf/11-x11-synaptics.fdi
new/xf86-input-synaptics-1.7.99.2/conf/11-x11-synaptics.fdi
--- old/xf86-input-synaptics-1.7.99.1/conf/11-x11-synaptics.fdi 2014-03-14
07:05:24.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/conf/11-x11-synaptics.fdi 2014-04-29
07:15:01.000000000 +0200
@@ -37,7 +37,8 @@
</match>
<match
- key="/org/freedesktop/Hal/devices/computer:system.hardware.version"
contains_outof="T440;X240;T540;Helix;S1Yoga">
+ key="/org/freedesktop/Hal/devices/computer:system.hardware.version"
+ contains_outof="ThinkPad T440;ThinkPad X240;ThinkPad T540;ThinkPad
Helix;ThinkPad S1 Yoga;ThinkPad L440;ThinkPad X1 Carbon 2nd;ThinkPad
T431;ThinkPad L540">
<match key="input.product" contains="Synaptics">
<merge key="input.x11_options.ClickPad" type="string">on</merge>
<merge key="input.x11_options.SecondarySoftButtonAreas"
type="string">58% 0 0 8% 42% 58% 0 8%</merge>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/conf/50-synaptics.conf
new/xf86-input-synaptics-1.7.99.2/conf/50-synaptics.conf
--- old/xf86-input-synaptics-1.7.99.1/conf/50-synaptics.conf 2014-03-14
07:05:05.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/conf/50-synaptics.conf 2014-04-29
07:15:01.000000000 +0200
@@ -25,16 +25,15 @@
Option "Ignore" "on"
EndSection
-# This option enables the bottom right corner to be a right button on
-# non-synaptics clickpads.
+# This option enables the bottom right corner to be a right button on clickpads
+# and the right and middle top areas to be right / middle buttons on clickpads
+# with a top button area.
# This option is only interpreted by clickpads.
Section "InputClass"
Identifier "Default clickpad buttons"
MatchDriver "synaptics"
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
-# To disable the bottom edge area so the buttons only work as buttons,
-# not for movement, set the AreaBottomEdge
-# Option "AreaBottomEdge" "82%"
+ Option "SecondarySoftButtonAreas" "58% 0 0 8% 42% 58% 0 8%"
EndSection
# This option disables software buttons on Apple touchpads.
@@ -45,18 +44,3 @@
MatchDriver "synaptics"
Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
EndSection
-
-# The Lenovo *40 series has no physical button for the TrackPoint and needs
-# the top softbutton area enabled by default.
-# Affected devices and their PNPIDs
-# LEN0033: Helix
-# LEN0034: T540
-# LEN0035: X240
-# LEN0036: T440
-# LEN0042: Yoga
-Section "InputClass"
- Identifier "Lenovo TrackPoint top software buttons"
- MatchDriver "synaptics"
- MatchPnPID "LEN0033*|LEN0034*|LEN0035*|LEN0036*|LEN0042*"
- Option "SecondarySoftButtonAreas" "58% 0 0 8% 42% 58% 0 8%"
-EndSection
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/configure
new/xf86-input-synaptics-1.7.99.2/configure
--- old/xf86-input-synaptics-1.7.99.1/configure 2014-03-17 22:29:13.000000000
+0100
+++ new/xf86-input-synaptics-1.7.99.2/configure 2014-04-30 03:41:38.000000000
+0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xf86-input-synaptics 1.7.99.1.
+# Generated by GNU Autoconf 2.69 for xf86-input-synaptics 1.7.99.2.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -591,8 +591,8 @@
# Identity of this package.
PACKAGE_NAME='xf86-input-synaptics'
PACKAGE_TARNAME='xf86-input-synaptics'
-PACKAGE_VERSION='1.7.99.1'
-PACKAGE_STRING='xf86-input-synaptics 1.7.99.1'
+PACKAGE_VERSION='1.7.99.2'
+PACKAGE_STRING='xf86-input-synaptics 1.7.99.2'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@@ -1376,7 +1376,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 1.7.99.1 to adapt to many kinds
of systems.
+\`configure' configures xf86-input-synaptics 1.7.99.2 to adapt to many kinds
of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1447,7 +1447,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xf86-input-synaptics
1.7.99.1:";;
+ short | recursive ) echo "Configuration of xf86-input-synaptics
1.7.99.2:";;
esac
cat <<\_ACEOF
@@ -1584,7 +1584,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xf86-input-synaptics configure 1.7.99.1
+xf86-input-synaptics configure 1.7.99.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1908,7 +1908,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 1.7.99.1, which was
+It was created by xf86-input-synaptics $as_me 1.7.99.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2776,7 +2776,7 @@
# Define the identity of the package.
PACKAGE='xf86-input-synaptics'
- VERSION='1.7.99.1'
+ VERSION='1.7.99.2'
cat >>confdefs.h <<_ACEOF
@@ -18918,7 +18918,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 1.7.99.1, which was
+This file was extended by xf86-input-synaptics $as_me 1.7.99.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18984,7 +18984,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //;
s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-xf86-input-synaptics config.status 1.7.99.1
+xf86-input-synaptics config.status 1.7.99.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/configure.ac
new/xf86-input-synaptics-1.7.99.2/configure.ac
--- old/xf86-input-synaptics-1.7.99.1/configure.ac 2014-03-17
22:28:40.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/configure.ac 2014-04-30
03:41:03.000000000 +0200
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-synaptics],
- [1.7.99.1],
+ [1.7.99.2],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-input-synaptics])
AC_CONFIG_SRCDIR([Makefile.am])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/man/synaptics.man
new/xf86-input-synaptics-1.7.99.2/man/synaptics.man
--- old/xf86-input-synaptics-1.7.99.1/man/synaptics.man 2014-03-17
05:57:34.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/man/synaptics.man 2014-04-29
07:15:01.000000000 +0200
@@ -495,17 +495,28 @@
Property: "Synaptics Soft Button Areas"
.
.TP
-.BI "Option \*qSecondarySoftButtonAreas\*q \*q" "RBL RBR RBT RBB MBL MBR MBT
MBB" \*q
+.BI "Option \*qHasSecondarySoftButtons\*q \*q" boolean \*q
This option is only available on ClickPad devices.
-Enable secondary soft button click area support on ClickPad devices (usually on
+Enable the secondary software button area support. The exact area must be
+set in option \*qSecondarySoftButtonAreas\*q. See
+.B ClickPad support
+for more details.
+.
+.TP
+.BI "Option \*qSecondarySoftButtonAreas\*q \*q" "RBL RBR RBT RBB MBL MBR MBT
MBB" \*q
+This option is only available on ClickPad devices and only if
+.B Option \*qHasSecondarySoftButtons\*q
+is enabled.
+Define the secondary soft button click areas on ClickPad devices (usually on
top of the device).
For the allowed values for this option, see
.B Option \*qSoftButtonAreas\*q.
Primary and secondary soft button areas must not overlap each other. If they
do,
the behavior of the driver is undefined.
Property: "Synaptics Secondary Soft Button Areas". This property is only
-initialized if the option is set in the
-__xconfigfile__(__filemansuffix__).
+initialized if
+.B Option \*qHasSecondarySoftButtons\*q
+is enabled and this option is set in the __xconfigfile__(__filemansuffix__).
.
.SH CONFIGURATION DETAILS
@@ -722,16 +733,22 @@
driver.
.LP
ClickPads provide software emulated buttons through
-.B Option SoftButtonAreas.
+.B Option \*qSoftButtonAreas\*q.
These buttons enable areas on the touchpad to perform as right or middle
mouse button. When the user performs a click within a defined soft button
area, a right or middle click is performed.
.LP
Some laptops, most notably the Lenovo T440, T540 and x240 series, provide a
pointing stick without physical buttons. On those laptops, the top of the
-touchpad acts as software-emulated button area. This area can be configured
+touchpad acts as software-emulated button area. This area can be enabled
+with
+.B Option \*qHasSecondarySoftButtons\*q
+and configured
with
-.B Option SecondarySoftButtonAreas.
+.B Option \*qSecondarySoftButtonAreas\*q.
+On some platforms, this option
+will be set automatically if the kernel detects a matching device. On Linux,
+the device must have the INPUT_PROP_TOPBUTTONPAD property set.
.SH "DEVICE PROPERTIES"
Synaptics 1.0 and higher support input device properties if the driver is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/src/eventcomm.c
new/xf86-input-synaptics-1.7.99.2/src/eventcomm.c
--- old/xf86-input-synaptics-1.7.99.1/src/eventcomm.c 2014-03-14
07:05:05.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/src/eventcomm.c 2014-04-30
03:41:03.000000000 +0200
@@ -50,6 +50,9 @@
#ifndef INPUT_PROP_SEMI_MT
#define INPUT_PROP_SEMI_MT 0x03
#endif
+#ifndef INPUT_PROP_TOPBUTTONPAD
+#define INPUT_PROP_TOPBUTTONPAD 0x04
+#endif
#ifndef ABS_MT_TOOL_Y
#define ABS_MT_TOOL_Y 0x3d
#endif
@@ -87,12 +90,46 @@
enum libevdev_read_flag read_flag;
};
+static void
+libevdev_log_func(enum libevdev_log_priority priority,
+ void *data,
+ const char *file, int line, const char *func,
+ const char *format, va_list args)
+_X_ATTRIBUTE_PRINTF(6, 0);
+
+static void
+libevdev_log_func(enum libevdev_log_priority priority,
+ void *data,
+ const char *file, int line, const char *func,
+ const char *format, va_list args)
+{
+ int verbosity;
+
+ switch(priority) {
+ case LIBEVDEV_LOG_ERROR: verbosity = 0; break;
+ case LIBEVDEV_LOG_INFO: verbosity = 4; break;
+ case LIBEVDEV_LOG_DEBUG: verbosity = 10; break;
+ }
+
+ LogVMessageVerbSigSafe(X_NOTICE, verbosity, format, args);
+}
+
+static void
+set_libevdev_log_handler(void)
+{
+ /* be quiet, gcc *handwave* */
+ libevdev_set_log_function((libevdev_log_func_t)libevdev_log_func, NULL);
+ libevdev_set_log_priority(LIBEVDEV_LOG_DEBUG);
+}
+
struct eventcomm_proto_data *
EventProtoDataAlloc(int fd)
{
struct eventcomm_proto_data *proto_data;
int rc;
+ set_libevdev_log_handler();
+
proto_data = calloc(1, sizeof(struct eventcomm_proto_data));
if (!proto_data)
return NULL;
@@ -110,16 +147,6 @@
return proto_data;
}
-static int
-last_mt_vals_slot(const SynapticsPrivate * priv)
-{
- struct eventcomm_proto_data *proto_data =
- (struct eventcomm_proto_data *) priv->proto_data;
- int value = proto_data->cur_slot;
-
- return value < priv->num_slots ? value : -1;
-}
-
static void
UninitializeTouch(InputInfoPtr pInfo)
{
@@ -191,6 +218,8 @@
struct eventcomm_proto_data *proto_data =
(struct eventcomm_proto_data *) priv->proto_data;
+ set_libevdev_log_handler();
+
if (libevdev_get_fd(proto_data->evdev) != -1) {
struct input_event ev;
@@ -234,6 +263,8 @@
UninitializeTouch(pInfo);
libevdev_grab(proto_data->evdev, LIBEVDEV_UNGRAB);
+ libevdev_set_log_function(NULL, NULL);
+ libevdev_set_log_priority(LIBEVDEV_LOG_INFO); /* reset to default */
return Success;
}
@@ -306,7 +337,9 @@
{0x0002, 0x0007, 0x0007, MODEL_SYNAPTICS},
{0x0002, 0x0008, 0x0008, MODEL_ALPS},
{0x05ac, PRODUCT_ANY, 0x222, MODEL_APPLETOUCH},
- {0x05ac, 0x223, PRODUCT_ANY, MODEL_UNIBODY_MACBOOK},
+ {0x05ac, 0x223, 0x228, MODEL_UNIBODY_MACBOOK},
+ {0x05ac, 0x229, 0x22b, MODEL_APPLETOUCH},
+ {0x05ac, 0x22c, PRODUCT_ANY, MODEL_UNIBODY_MACBOOK},
{0x0002, 0x000e, 0x000e, MODEL_ELANTECH},
{0x0, 0x0, 0x0, 0x0}
};
@@ -501,8 +534,10 @@
if (rc != -EAGAIN) {
LogMessageVerbSigSafe(X_ERROR, 0, "%s: Read error %d\n",
pInfo->name,
errno);
- } else if (proto_data->read_flag == LIBEVDEV_READ_FLAG_SYNC)
+ } else if (proto_data->read_flag == LIBEVDEV_READ_FLAG_SYNC) {
proto_data->read_flag = LIBEVDEV_READ_FLAG_NORMAL;
+ return SynapticsReadEvent(pInfo, ev);
+ }
return FALSE;
}
@@ -549,7 +584,7 @@
proto_data->cur_slot = ev->value;
}
else {
- int slot_index = last_mt_vals_slot(priv);
+ int slot_index = proto_data->cur_slot;
if (slot_index < 0)
return;
@@ -633,6 +668,8 @@
struct eventcomm_proto_data *proto_data = priv->proto_data;
Bool sync_cumulative = FALSE;
+ set_libevdev_log_handler();
+
SynapticsResetTouchHwState(hw, FALSE);
/* Reset cumulative values if buttons were not previously pressed,
@@ -770,6 +807,11 @@
xf86IDrvMsg(pInfo, X_INFO, "found clickpad property\n");
para->clickpad = TRUE;
}
+
+ if (libevdev_has_property(dev, INPUT_PROP_TOPBUTTONPAD)) {
+ xf86IDrvMsg(pInfo, X_INFO, "found top buttonpad property\n");
+ para->has_secondary_buttons = TRUE;
+ }
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/src/properties.c
new/xf86-input-synaptics-1.7.99.2/src/properties.c
--- old/xf86-input-synaptics-1.7.99.1/src/properties.c 2014-03-14
05:50:57.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/src/properties.c 2014-04-29
07:15:01.000000000 +0200
@@ -176,6 +176,9 @@
prop_softbutton_areas =
InitAtom(pInfo->dev, SYNAPTICS_PROP_SOFTBUTTON_AREAS, 32, 8, values);
+ if (!para->has_secondary_buttons)
+ return;
+
values[0] = para->softbutton_areas[TOP_RIGHT_BUTTON_AREA][LEFT];
values[1] = para->softbutton_areas[TOP_RIGHT_BUTTON_AREA][RIGHT];
values[2] = para->softbutton_areas[TOP_RIGHT_BUTTON_AREA][TOP];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/src/synaptics.c
new/xf86-input-synaptics-1.7.99.2/src/synaptics.c
--- old/xf86-input-synaptics-1.7.99.1/src/synaptics.c 2014-03-17
05:57:34.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/src/synaptics.c 2014-04-30
03:41:03.000000000 +0200
@@ -576,6 +576,8 @@
int width, height, diag, range;
int horizHyst, vertHyst;
int middle_button_timeout;
+ int grab_event_device = 0;
+ const char *source;
/* 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
@@ -672,6 +674,10 @@
pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180);
pars->click_time = xf86SetIntOption(opts, "ClickTime", 100);
pars->clickpad = xf86SetBoolOption(opts, "ClickPad", pars->clickpad);
/* Probed */
+ if (pars->clickpad)
+ pars->has_secondary_buttons = xf86SetBoolOption(opts,
+
"HasSecondarySoftButtons",
+
pars->has_secondary_buttons);
pars->clickpad_ignore_motion_time = 100; /* ms */
/* middle mouse button emulation on a clickpad? nah, you're joking */
middle_button_timeout = pars->clickpad ? 0 : 75;
@@ -747,7 +753,16 @@
xf86SetRealOption(opts, "PressureMotionMinFactor", 1.0);
pars->press_motion_max_factor =
xf86SetRealOption(opts, "PressureMotionMaxFactor", 1.0);
- pars->grab_event_device = xf86SetBoolOption(opts, "GrabEventDevice", TRUE);
+
+ /* Only grab the device by default if it's not coming from a config
+ backend. This way we avoid the device being added twice and sending
+ duplicate events.
+ */
+ source = xf86CheckStrOption(opts, "_source", NULL);
+ if (source == NULL || strncmp(source, "server/", 7) != 0)
+ grab_event_device = TRUE;
+ pars->grab_event_device = xf86SetBoolOption(opts, "GrabEventDevice",
grab_event_device);
+
pars->tap_and_drag_gesture =
xf86SetBoolOption(opts, "TapAndDragGesture", TRUE);
pars->resolution_horiz =
@@ -766,7 +781,8 @@
}
set_primary_softbutton_areas_option(pInfo);
- set_secondary_softbutton_areas_option(pInfo);
+ if (pars->has_secondary_buttons)
+ set_secondary_softbutton_areas_option(pInfo);
}
static double
@@ -2662,26 +2678,11 @@
}
/* Some trackpads touchpad only track two touchpoints but announce
- BTN_TOOL_TRIPLETAP (which sets hw->numFingers to 3).
- This can affect clickfingers, in the following ways:
- * one finger down: normal click
- * two fingers down, close together: 2 finger click
- * two fingers down, apart: normal click
- * three fingers down, close together: 3 finger click
- * three fingers down, with two grouped next to each other: should be
- * 2-finger click but we can't detect this.
- * so: if two detected fingers are close together and HW says three
- * fingers, make it three fingers.
- * if two detected fingers are apart and HW says three fingers, make
- * it a two-finger click, guessing that the third finger is somewhere
- * close to another finger.
- */
- if (hw->numFingers >= 3 && nfingers < hw->numFingers) {
- if (!nfingers) /* touchpoints too far apart */
- nfingers = 2;
- else
- nfingers++;
- }
+ * BTN_TOOL_TRIPLETAP (which sets hw->numFingers to 3), when this happens
+ * the user likely intents to do a 3 finger click, so handle it as such.
+ */
+ if (hw->numFingers >= 3 && hw->num_mt_mask < 3)
+ nfingers = 3;
return nfingers;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/src/synapticsstr.h
new/xf86-input-synaptics-1.7.99.2/src/synapticsstr.h
--- old/xf86-input-synaptics-1.7.99.1/src/synapticsstr.h 2014-03-14
05:51:02.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/src/synapticsstr.h 2014-04-29
07:15:01.000000000 +0200
@@ -176,6 +176,7 @@
int tap_time_2; /* max. tapping time for double taps */
int click_time; /* The duration of a single click */
Bool clickpad; /* Device is a has integrated buttons */
+ Bool has_secondary_buttons; /* Device has a top soft-button area */
int clickpad_ignore_motion_time; /* Ignore motion for X ms after a click */
int emulate_mid_button_time; /* Max time between left and right
button presses to
emulate a middle button press. */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.99.1/src/synproto.h
new/xf86-input-synaptics-1.7.99.2/src/synproto.h
--- old/xf86-input-synaptics-1.7.99.1/src/synproto.h 2014-03-14
07:05:05.000000000 +0100
+++ new/xf86-input-synaptics-1.7.99.2/src/synproto.h 2014-04-29
07:15:01.000000000 +0200
@@ -44,11 +44,11 @@
typedef struct _SynapticsPrivateRec SynapticsPrivate;
enum SynapticsSlotState {
- SLOTSTATE_EMPTY = 0,
- SLOTSTATE_OPEN,
- SLOTSTATE_CLOSE,
- SLOTSTATE_OPEN_EMPTY,
- SLOTSTATE_UPDATE,
+ SLOTSTATE_EMPTY = 0, /* no slot in this cycle */
+ SLOTSTATE_OPEN, /* tracking ID received */
+ SLOTSTATE_CLOSE, /* tracking ID -1 received */
+ SLOTSTATE_OPEN_EMPTY, /* previously had tracking id, no events in
this read cycle */
+ SLOTSTATE_UPDATE, /* had tracking id, other events in this cycle
*/
};
/* used to mark emulated hw button state */
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]