---
 src/synaptics.c |   51 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 46 insertions(+), 5 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index ff66517..f917d8b 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -69,6 +69,11 @@
 #include <xf86Xinput.h>
 #include <exevents.h>
 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
+#include <X11/Xatom.h>
+#include <xserver-properties.h>
+#endif
+
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
 #include "mipointer.h"
 #endif
@@ -795,6 +800,20 @@ DeviceInit(DeviceIntPtr dev)
     SynapticsPrivate *priv = (SynapticsPrivate *) (local->private);
     unsigned char map[SYN_MAX_BUTTONS + 1];
     int i;
+    Atom axis_labels[] = {
+           XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X),
+           XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y),
+    };
+    Atom btn_labels[] = {
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT),
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE),
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT),
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP),
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN),
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_LEFT),
+           XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_RIGHT),
+           // FIXME: I don't know what the other buttons might be
+    };
 
     DBG(3, ErrorF("Synaptics DeviceInit called\n"));
 
@@ -805,6 +824,9 @@ DeviceInit(DeviceIntPtr dev)
 
     InitPointerDeviceStruct((DevicePtr)dev, map,
                            SYN_MAX_BUTTONS,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+                           btn_labels,
+#endif
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
                            miPointerGetMotionEvents,
 #elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3
@@ -813,21 +835,40 @@ DeviceInit(DeviceIntPtr dev)
                            SynapticsCtrl,
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
                            miPointerGetMotionBufferSize()
-#else
+#elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 7
                            GetMotionHistorySize(), 2
+#else
+                           GetMotionHistorySize(), 2, axis_labels
 #endif
                            );
     /* X valuator */
     if (priv->minx < priv->maxx)
-       xf86InitValuatorAxisStruct(dev, 0, priv->minx, priv->maxx, 1, 0, 1);
+       xf86InitValuatorAxisStruct(dev, 0, 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+                                   axis_labels[0],
+#endif
+                                  priv->minx, priv->maxx, 1, 0, 1);
     else
-       xf86InitValuatorAxisStruct(dev, 0, 0, -1, 1, 0, 1);
+       xf86InitValuatorAxisStruct(dev, 0,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+                                   axis_labels[0],
+#endif
+                                  0, -1, 1, 0, 1);
     xf86InitValuatorDefaults(dev, 0);
+    
     /* Y valuator */
     if (priv->miny < priv->maxy)
-       xf86InitValuatorAxisStruct(dev, 1, priv->miny, priv->maxy, 1, 0, 1);
+       xf86InitValuatorAxisStruct(dev, 1,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+                                   axis_labels[1],
+#endif
+                                  priv->miny, priv->maxy, 1, 0, 1);
     else
-       xf86InitValuatorAxisStruct(dev, 1, 0, -1, 1, 0, 1);
+       xf86InitValuatorAxisStruct(dev, 1,
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+                                   axis_labels[1],
+#endif
+                                  0, -1, 1, 0, 1);
     xf86InitValuatorDefaults(dev, 1);
 
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
-- 
1.6.3.1

_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to