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]

Reply via email to