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