aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZephaniah E. Hull <warp@agamemnon.b5>2006-09-10 06:47:15 -0400
committerZephaniah E. Hull <warp@agamemnon.b5>2006-09-10 06:47:15 -0400
commitab65184d472614d2664e6cd7bca2d6dbc28fad07 (patch)
treed46152f30e9f75b7a4fc75ed0de1cfd236fb8b12
parentReplace the old two buffer approach to handling rel emulation of abs axes, (diff)
downloadxf86-input-evdev-ab65184d472614d2664e6cd7bca2d6dbc28fad07.tar.gz
xf86-input-evdev-ab65184d472614d2664e6cd7bca2d6dbc28fad07.tar.bz2
xf86-input-evdev-ab65184d472614d2664e6cd7bca2d6dbc28fad07.zip
Fix compilation.
-rw-r--r--src/evdev.c10
-rw-r--r--src/evdev.h9
-rw-r--r--src/evdev_axes.c45
3 files changed, 52 insertions, 12 deletions
diff --git a/src/evdev.c b/src/evdev.c
index 2d8d120..1b7fb86 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -117,9 +117,13 @@ EvdevReadInput(InputInfoPtr pInfo)
case EV_SYN:
if (ev.code == SYN_REPORT) {
- EvdevAxesSyn (pInfo);
- /* EvdevBtnSyn (pInfo); */
- /* EvdevKeySyn (pInfo); */
+ EvdevAxesSynRep (pInfo);
+ /* EvdevBtnSynRep (pInfo); */
+ /* EvdevKeySynRep (pInfo); */
+ } else if (ev.code == SYN_CONFIG) {
+ EvdevAxesSynCfg (pInfo);
+ /* EvdevBtnSynCfg (pInfo); */
+ /* EvdevKeySynCfg (pInfo); */
}
break;
}
diff --git a/src/evdev.h b/src/evdev.h
index db33546..0425482 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -117,6 +117,12 @@
#include <X11/extensions/XKB.h>
#include <X11/extensions/XKBstr.h>
+/* XInput 1.4+ compatability. */
+#ifndef SendCoreEvents
+#define SendCoreEvents 59
+#define DontSendCoreEvents 60
+#endif
+
/*
* Switch events
@@ -264,7 +270,8 @@ int EvdevAxesNew0(InputInfoPtr pInfo);
int EvdevAxesNew1(InputInfoPtr pInfo);
void EvdevAxesAbsProcess (InputInfoPtr pInfo, struct input_event *ev);
void EvdevAxesRelProcess (InputInfoPtr pInfo, struct input_event *ev);
-void EvdevAxesSyn (InputInfoPtr pInfo);
+void EvdevAxesSynRep (InputInfoPtr pInfo);
+void EvdevAxesSynCfg (InputInfoPtr pInfo);
int EvdevKeyInit (DeviceIntPtr device);
int EvdevKeyNew (InputInfoPtr pInfo);
diff --git a/src/evdev_axes.c b/src/evdev_axes.c
index df6eb4b..28bcdc9 100644
--- a/src/evdev_axes.c
+++ b/src/evdev_axes.c
@@ -215,7 +215,29 @@ EvdevAxesRealSyn (InputInfoPtr pInfo, int absolute, int skip_xy)
}
static void
-EvdevAxesAbsSyn (InputInfoPtr pInfo)
+EvdevAxesAbsSynCfg (InputInfoPtr pInfo)
+{
+ evdevDevicePtr pEvdev = pInfo->private;
+ evdevStatePtr state = &pEvdev->state;
+ struct input_absinfo absinfo;
+ int i;
+
+ for (i = 0; i < ABS_MAX; i++) {
+ if (!test_bit (i, pEvdev->bits.abs))
+ continue;
+
+ if (ioctl (pInfo->fd, EVIOCGABS(i), &absinfo) < 0) {
+ xf86Msg(X_ERROR, "ioctl EVIOCGABS (%d) failed: %s\n", i, strerror(errno));
+ continue;
+ }
+ state->abs->min[state->abs->map[i]] = absinfo.minimum;
+ state->abs->max[state->abs->map[i]] = absinfo.maximum;
+ }
+
+}
+
+static void
+EvdevAxesAbsSynRep (InputInfoPtr pInfo)
{
evdevDevicePtr pEvdev = pInfo->private;
evdevStatePtr state = &pEvdev->state;
@@ -263,7 +285,7 @@ EvdevAxesAbsSyn (InputInfoPtr pInfo)
}
static void
-EvdevAxesRelSyn (InputInfoPtr pInfo)
+EvdevAxesRelSynRep (InputInfoPtr pInfo)
{
evdevDevicePtr pEvdev = pInfo->private;
evdevStatePtr state = &pEvdev->state;
@@ -290,10 +312,17 @@ EvdevAxesRelSyn (InputInfoPtr pInfo)
}
void
-EvdevAxesSyn (InputInfoPtr pInfo)
+EvdevAxesSynRep (InputInfoPtr pInfo)
+{
+ EvdevAxesAbsSynRep (pInfo);
+ EvdevAxesRelSynRep (pInfo);
+}
+
+void
+EvdevAxesSynCfg (InputInfoPtr pInfo)
{
- EvdevAxesAbsSyn (pInfo);
- EvdevAxesRelSyn (pInfo);
+ EvdevAxesAbsSynCfg (pInfo);
+/* EvdevAxesRelSynCfg (pInfo);*/
}
void
@@ -316,7 +345,7 @@ EvdevAxesAbsProcess (InputInfoPtr pInfo, struct input_event *ev)
state->abs->count++;
if (!state->sync)
- EvdevAxesAbsSyn (pInfo);
+ EvdevAxesAbsSynRep (pInfo);
}
void
@@ -338,7 +367,7 @@ EvdevAxesRelProcess (InputInfoPtr pInfo, struct input_event *ev)
state->rel->count++;
if (!state->sync)
- EvdevAxesRelSyn (pInfo);
+ EvdevAxesRelSynRep (pInfo);
}
int
@@ -637,7 +666,7 @@ EvdevAxesInit (DeviceIntPtr device)
return !Success;
for (i = 0; i < axes; i++) {
- xf86InitValuatorAxisStruct(device, i, 0, 0, 0, 0, 1);
+ xf86InitValuatorAxisStruct(device, i, 0, -1, 0, 0, 1);
xf86InitValuatorDefaults(device, i);
}