--- 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