File xf86-input-synaptics-fix-clickpad-capabilities.diff of Package xorg-x11-driver-input

---
 src/eventcomm.c |   29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -245,6 +245,25 @@
 
 
 static void
+event_query_clickpad(InputInfoPtr pInfo)
+{
+    SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
+
+    /* clickpad device reports only the single left button mask */
+    if (priv->has_left && !priv->has_right && !priv->has_middle &&
+	/*!priv->has_double &&*/
+	priv->model == MODEL_SYNAPTICS) {
+	priv->is_clickpad = TRUE;
+	/* enable right/middle button caps; otherwise gnome-settings-daemon
+	 * will ignore this device for left/right-hand setup because of a
+	 * single-button
+	 */
+	priv->has_right = priv->has_middle = TRUE;
+	xf86IDrvMsg(pInfo, X_INFO, "is Clickpad device\n");
+    }
+}
+
+static void
 event_query_led(InputInfoPtr pInfo)
 {
     SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private;
@@ -357,12 +376,6 @@
 	strcat(buf, " scroll-buttons");
 
     xf86IDrvMsg(pInfo, X_PROBED, "buttons:%s\n", buf);
-
-    /* clickpad device reports only the single left button mask */
-    if (priv->has_left && !priv->has_right && !priv->has_middle && !priv->has_double) {
-	priv->is_clickpad = TRUE;
-	xf86IDrvMsg(pInfo, X_PROBED, "is Clickpad device\n");
-    }
 }
 
 static Bool
@@ -536,11 +549,13 @@
 
     if (event_query_is_touchpad(pInfo->fd, (proto_data) ? proto_data->need_grab : TRUE))
 	event_query_axis_ranges(pInfo);
-    event_query_led(pInfo);
     event_query_model(pInfo->fd, &priv->model, &priv->id_vendor, &priv->id_product);
 
     xf86IDrvMsg(pInfo, X_PROBED, "Vendor %#hx Product %#hx\n",
                 priv->id_vendor, priv->id_product);
+
+    event_query_clickpad(pInfo);
+    event_query_led(pInfo);
 }
 
 static Bool
openSUSE Build Service is sponsored by