Today's git snapshot
This commit is contained in:
parent
1ba122ea5d
commit
841f65cf08
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,3 +14,4 @@ xf86-input-evdev-20100823.tar.bz2
|
||||
/xf86-input-evdev-20120718.tar.bz2
|
||||
/xf86-input-evdev-2.7.2.tar.bz2
|
||||
/xf86-input-evdev-2.7.3.tar.bz2
|
||||
/xf86-input-evdev-20130214.tar.bz2
|
||||
|
@ -1,187 +0,0 @@
|
||||
From 7f20a75e91bc5ffa203ed09f82834f0dd619efbe Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Tue, 27 Mar 2012 12:18:46 +1000
|
||||
Subject: [PATCH evdev] Allow relative scroll valuators on absolute devices
|
||||
|
||||
Special-case RHEL_WHEEL, RHEL_HWHEEL and REL_DIAL to add scroll valuators
|
||||
for those axes on top of the absolute axes.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=805902
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
|
||||
src/evdev.h | 3 +-
|
||||
2 files changed, 86 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index fc7ba88..e7b4850 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -703,7 +703,9 @@ EvdevProcessRelativeMotionEvent(InputInfoPtr pInfo, struct input_event *ev)
|
||||
#endif
|
||||
default:
|
||||
/* Ignore EV_REL events if we never set up for them. */
|
||||
- if (!(pEvdev->flags & EVDEV_RELATIVE_EVENTS))
|
||||
+ if (!(pEvdev->flags & EVDEV_RELATIVE_EVENTS) &&
|
||||
+ ev->code != REL_WHEEL && ev->code != REL_DIAL &&
|
||||
+ ev->code != REL_HWHEEL)
|
||||
return;
|
||||
|
||||
/* Handle mouse wheel emulation */
|
||||
@@ -712,7 +714,7 @@ EvdevProcessRelativeMotionEvent(InputInfoPtr pInfo, struct input_event *ev)
|
||||
|
||||
pEvdev->rel_queued = 1;
|
||||
pEvdev->delta[ev->code] += value;
|
||||
- map = pEvdev->axis_map[ev->code];
|
||||
+ map = pEvdev->axis_map[ev->code + pEvdev->rel_offset];
|
||||
valuator_mask_set(pEvdev->vals, map, value);
|
||||
break;
|
||||
}
|
||||
@@ -1236,7 +1238,7 @@ is_blacklisted_axis(int axis)
|
||||
|
||||
|
||||
static int
|
||||
-EvdevAddAbsValuatorClass(DeviceIntPtr device)
|
||||
+EvdevAddAbsValuatorClass(DeviceIntPtr device, int want_scroll_axes)
|
||||
{
|
||||
InputInfoPtr pInfo;
|
||||
EvdevPtr pEvdev;
|
||||
@@ -1284,6 +1286,20 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+#ifdef HAVE_SMOOTH_SCROLLING
|
||||
+ if (want_scroll_axes && EvdevBitIsSet(pEvdev->bitmask, EV_REL))
|
||||
+ {
|
||||
+ pEvdev->rel_offset = num_axes;
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_WHEEL))
|
||||
+ num_axes++;
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_HWHEEL))
|
||||
+ num_axes++;
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_DIAL))
|
||||
+ num_axes++;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (num_axes + num_mt_axes > MAX_VALUATORS) {
|
||||
xf86IDrvMsg(pInfo, X_WARNING, "found %d axes, limiting to %d.\n", num_axes, MAX_VALUATORS);
|
||||
num_axes = MAX_VALUATORS;
|
||||
@@ -1373,6 +1389,20 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device)
|
||||
i++;
|
||||
}
|
||||
|
||||
+#ifdef HAVE_SMOOTH_SCROLLING
|
||||
+ if (want_scroll_axes)
|
||||
+ {
|
||||
+ int mapping = pEvdev->rel_offset;
|
||||
+
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_HWHEEL))
|
||||
+ pEvdev->axis_map[pEvdev->rel_offset + REL_HWHEEL] = mapping++;
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_DIAL))
|
||||
+ pEvdev->axis_map[pEvdev->rel_offset + REL_DIAL] = mapping++;
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_WHEEL))
|
||||
+ pEvdev->axis_map[pEvdev->rel_offset + REL_WHEEL] = mapping++;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
EvdevInitAxesLabels(pEvdev, Absolute, pEvdev->num_vals + num_mt_axes, atoms);
|
||||
|
||||
if (!InitValuatorClassDeviceStruct(device, num_axes + num_mt_axes, atoms,
|
||||
@@ -1467,6 +1497,51 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device)
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_SMOOTH_SCROLLING
|
||||
+ if (want_scroll_axes)
|
||||
+ {
|
||||
+ int axidx;
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_WHEEL))
|
||||
+ {
|
||||
+ axidx = pEvdev->rel_offset + REL_WHEEL;
|
||||
+ xf86InitValuatorAxisStruct(device,
|
||||
+ pEvdev->axis_map[axidx],
|
||||
+ atoms[pEvdev->axis_map[axidx]],
|
||||
+ NO_AXIS_LIMITS, NO_AXIS_LIMITS,
|
||||
+ 0, 0, 0, Relative);
|
||||
+ SetScrollValuator(device, pEvdev->axis_map[axidx],
|
||||
+ SCROLL_TYPE_VERTICAL, -1.0,
|
||||
+ SCROLL_FLAG_PREFERRED);
|
||||
+ }
|
||||
+
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_HWHEEL))
|
||||
+ {
|
||||
+ axidx = pEvdev->rel_offset + REL_HWHEEL;
|
||||
+ xf86InitValuatorAxisStruct(device,
|
||||
+ pEvdev->axis_map[axidx],
|
||||
+ atoms[pEvdev->axis_map[axidx]],
|
||||
+ NO_AXIS_LIMITS, NO_AXIS_LIMITS,
|
||||
+ 0, 0, 0, Relative);
|
||||
+ SetScrollValuator(device, pEvdev->axis_map[axidx],
|
||||
+ SCROLL_TYPE_HORIZONTAL, 1.0,
|
||||
+ SCROLL_FLAG_NONE);
|
||||
+ }
|
||||
+
|
||||
+ if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_DIAL))
|
||||
+ {
|
||||
+ axidx = pEvdev->rel_offset + REL_DIAL;
|
||||
+ xf86InitValuatorAxisStruct(device,
|
||||
+ pEvdev->axis_map[axidx],
|
||||
+ atoms[pEvdev->axis_map[axidx]],
|
||||
+ NO_AXIS_LIMITS, NO_AXIS_LIMITS,
|
||||
+ 0, 0, 0, Relative);
|
||||
+ SetScrollValuator(device, pEvdev->axis_map[axidx],
|
||||
+ SCROLL_TYPE_HORIZONTAL, 1.0,
|
||||
+ SCROLL_FLAG_NONE);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
free(atoms);
|
||||
|
||||
for (i = 0; i < ArrayLength(proximity_bits); i++)
|
||||
@@ -1696,12 +1771,16 @@ static void
|
||||
EvdevInitAnyValuators(DeviceIntPtr device, EvdevPtr pEvdev)
|
||||
{
|
||||
InputInfoPtr pInfo = device->public.devicePrivate;
|
||||
+ int rel_success = FALSE;
|
||||
|
||||
if (pEvdev->flags & EVDEV_RELATIVE_EVENTS &&
|
||||
EvdevAddRelValuatorClass(device) == Success)
|
||||
+ {
|
||||
+ rel_success = TRUE;
|
||||
xf86IDrvMsg(pInfo, X_INFO, "initialized for relative axes.\n");
|
||||
+ }
|
||||
if (pEvdev->flags & EVDEV_ABSOLUTE_EVENTS &&
|
||||
- EvdevAddAbsValuatorClass(device) == Success)
|
||||
+ EvdevAddAbsValuatorClass(device, !rel_success) == Success)
|
||||
xf86IDrvMsg(pInfo, X_INFO, "initialized for absolute axes.\n");
|
||||
}
|
||||
|
||||
@@ -1710,7 +1789,7 @@ EvdevInitAbsValuators(DeviceIntPtr device, EvdevPtr pEvdev)
|
||||
{
|
||||
InputInfoPtr pInfo = device->public.devicePrivate;
|
||||
|
||||
- if (EvdevAddAbsValuatorClass(device) == Success) {
|
||||
+ if (EvdevAddAbsValuatorClass(device, TRUE) == Success) {
|
||||
xf86IDrvMsg(pInfo, X_INFO,"initialized for absolute axes.\n");
|
||||
} else {
|
||||
xf86IDrvMsg(pInfo, X_ERROR,"failed to initialize for absolute axes.\n");
|
||||
diff --git a/src/evdev.h b/src/evdev.h
|
||||
index c2f9246..8ea9d07 100644
|
||||
--- a/src/evdev.h
|
||||
+++ b/src/evdev.h
|
||||
@@ -154,7 +154,8 @@ typedef struct {
|
||||
|
||||
int num_vals; /* number of valuators */
|
||||
int num_mt_vals; /* number of multitouch valuators */
|
||||
- int axis_map[max(ABS_CNT, REL_CNT)]; /* Map evdev <axis> to index */
|
||||
+ int axis_map[ABS_CNT + REL_CNT]; /* Map evdev <axis> to index */
|
||||
+ int rel_offset; /* offset for relative axes in absolute device */
|
||||
ValuatorMask *vals; /* new values coming in */
|
||||
ValuatorMask *old_vals; /* old values for calculating relative motion */
|
||||
ValuatorMask *prox; /* last values set while not in proximity */
|
||||
--
|
||||
1.7.10.4
|
||||
|
@ -1,63 +0,0 @@
|
||||
From 454194f4b530af5d7f92a3b28c28495b4faac547 Mon Sep 17 00:00:00 2001
|
||||
From: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
Date: Tue, 8 Jan 2013 15:04:07 +1000
|
||||
Subject: [PATCH evdev] Force a button if MT axes are present and it is not a
|
||||
gamepad
|
||||
|
||||
We expect at least BTN_TOUCH for anything with MT axes, but devices that
|
||||
don't have that need a button class regardless. Some gamepads define
|
||||
MT axes but no buttons, causing a bug in the server when they post a
|
||||
TouchBegin.
|
||||
|
||||
[ 97436.293] (EE) BUG: triggered 'if (!b || !v)'
|
||||
[ 97436.293] (EE) BUG: exevents.c:929 in UpdateDeviceState()
|
||||
|
||||
So, ignore it, if it is a joystick (e. g. if it have BTN_JOYSTICK defined).
|
||||
Otherwise, fake a button.
|
||||
|
||||
This patch basically merges two patches written by Peter Hutterer
|
||||
<peter.hutterer@who-t.net>.
|
||||
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev.c | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index 7b355d7..5667dc1 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -2160,8 +2160,20 @@ EvdevProbe(InputInfoPtr pInfo)
|
||||
xf86IDrvMsg(pInfo, X_PROBED, "Found absolute axes\n");
|
||||
pEvdev->flags |= EVDEV_ABSOLUTE_EVENTS;
|
||||
|
||||
- if (has_mt)
|
||||
+ if (has_mt) {
|
||||
xf86IDrvMsg(pInfo, X_PROBED, "Found absolute multitouch axes\n");
|
||||
+ if (num_buttons == 0) {
|
||||
+ if (EvdevBitIsSet(pEvdev->key_bitmask, BTN_JOYSTICK)) {
|
||||
+ xf86IDrvMsg(pInfo, X_INFO, "Device is a Joystick with MT without buttons. Ignoring it.\n");
|
||||
+ goto out;
|
||||
+ } else {
|
||||
+ xf86IDrvMsg(pInfo, X_INFO, "No buttons found, faking one.\n");
|
||||
+ num_buttons = 1;
|
||||
+ pEvdev->num_buttons = num_buttons;
|
||||
+ pEvdev->flags |= EVDEV_BUTTON_EVENTS;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if ((EvdevBitIsSet(pEvdev->abs_bitmask, ABS_X) &&
|
||||
EvdevBitIsSet(pEvdev->abs_bitmask, ABS_Y))) {
|
||||
@@ -2276,6 +2288,7 @@ EvdevProbe(InputInfoPtr pInfo)
|
||||
pEvdev->flags |= EVDEV_RELATIVE_EVENTS;
|
||||
}
|
||||
|
||||
+out:
|
||||
if (rc)
|
||||
xf86IDrvMsg(pInfo, X_WARNING, "Don't know how to use device\n");
|
||||
|
||||
--
|
||||
1.8.1
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 3b7ba39fcaf261f800205fd6cf45fea9998529e5 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Mon, 14 Jan 2013 14:03:54 +1000
|
||||
Subject: [PATCH evdev 1/4] Localise tmp variable
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index 5667dc1..dfce8c4 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -424,7 +424,6 @@ EvdevQueueButtonClicks(InputInfoPtr pInfo, int button, int count)
|
||||
static void
|
||||
EvdevProcessValuators(InputInfoPtr pInfo)
|
||||
{
|
||||
- int tmp;
|
||||
EvdevPtr pEvdev = pInfo->private;
|
||||
int *delta = pEvdev->delta;
|
||||
|
||||
@@ -456,6 +455,7 @@ EvdevProcessValuators(InputInfoPtr pInfo)
|
||||
}
|
||||
|
||||
if (pEvdev->rel_queued) {
|
||||
+ int tmp;
|
||||
int i;
|
||||
|
||||
if (pEvdev->swap_axes) {
|
||||
--
|
||||
1.8.1
|
@ -1,84 +0,0 @@
|
||||
From 069c035ab0787e6841159929199ae58502d89c4b Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Mon, 14 Jan 2013 14:07:26 +1000
|
||||
Subject: [PATCH evdev 2/4] Move valuator swapping into a helper function
|
||||
|
||||
No functional changes.
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev.c | 52 +++++++++++++++++++++++++++++++---------------------
|
||||
1 file changed, 31 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index dfce8c4..f061324 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -418,6 +418,36 @@ EvdevQueueButtonClicks(InputInfoPtr pInfo, int button, int count)
|
||||
}
|
||||
}
|
||||
|
||||
+static void
|
||||
+EvdevSwapAbsValuators(EvdevPtr pEvdev, ValuatorMask *mask)
|
||||
+{
|
||||
+ int i;
|
||||
+ int swapped_isset[2] = {0, 0};
|
||||
+ int swapped_values[2];
|
||||
+
|
||||
+ if (!pEvdev->swap_axes)
|
||||
+ return;
|
||||
+
|
||||
+ for(i = 0; i <= 1; i++) {
|
||||
+ if (valuator_mask_isset(mask, i)) {
|
||||
+ swapped_isset[1 - i] = 1;
|
||||
+ swapped_values[1 - i] =
|
||||
+ xf86ScaleAxis(valuator_mask_get(mask, i),
|
||||
+ pEvdev->absinfo[1 - i].maximum,
|
||||
+ pEvdev->absinfo[1 - i].minimum,
|
||||
+ pEvdev->absinfo[i].maximum,
|
||||
+ pEvdev->absinfo[i].minimum);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i <= 1; i++) {
|
||||
+ if (swapped_isset[i])
|
||||
+ valuator_mask_set(mask, i, swapped_values[i]);
|
||||
+ else
|
||||
+ valuator_mask_unset(mask, i);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Take the valuators and process them accordingly.
|
||||
*/
|
||||
@@ -496,27 +526,7 @@ EvdevProcessValuators(InputInfoPtr pInfo)
|
||||
else if (pEvdev->abs_queued && pEvdev->in_proximity) {
|
||||
int i;
|
||||
|
||||
- if (pEvdev->swap_axes) {
|
||||
- int swapped_isset[2] = {0, 0};
|
||||
- int swapped_values[2];
|
||||
-
|
||||
- for(i = 0; i <= 1; i++)
|
||||
- if (valuator_mask_isset(pEvdev->vals, i)) {
|
||||
- swapped_isset[1 - i] = 1;
|
||||
- swapped_values[1 - i] =
|
||||
- xf86ScaleAxis(valuator_mask_get(pEvdev->vals, i),
|
||||
- pEvdev->absinfo[1 - i].maximum,
|
||||
- pEvdev->absinfo[1 - i].minimum,
|
||||
- pEvdev->absinfo[i].maximum,
|
||||
- pEvdev->absinfo[i].minimum);
|
||||
- }
|
||||
-
|
||||
- for (i = 0; i <= 1; i++)
|
||||
- if (swapped_isset[i])
|
||||
- valuator_mask_set(pEvdev->vals, i, swapped_values[i]);
|
||||
- else
|
||||
- valuator_mask_unset(pEvdev->vals, i);
|
||||
- }
|
||||
+ EvdevSwapAbsValuators(pEvdev, pEvdev->vals);
|
||||
|
||||
for (i = 0; i <= 1; i++) {
|
||||
int val;
|
||||
--
|
||||
1.8.1
|
@ -1,102 +0,0 @@
|
||||
From 2432626b70b7f55a337bcfdc9ba415811634c062 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Mon, 14 Jan 2013 14:10:14 +1000
|
||||
Subject: [PATCH evdev 3/4] Move calibration adjustments to helper function
|
||||
|
||||
No functional changes.
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev.c | 69 +++++++++++++++++++++++++++++++++----------------------------
|
||||
1 file changed, 37 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index f061324..1581d47 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -448,6 +448,42 @@ EvdevSwapAbsValuators(EvdevPtr pEvdev, ValuatorMask *mask)
|
||||
}
|
||||
}
|
||||
|
||||
+static void
|
||||
+EvdevApplyCalibration(EvdevPtr pEvdev, ValuatorMask *mask)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i <= 1; i++) {
|
||||
+ int val;
|
||||
+ int calib_min;
|
||||
+ int calib_max;
|
||||
+
|
||||
+ if (!valuator_mask_isset(mask, i))
|
||||
+ continue;
|
||||
+
|
||||
+ val = valuator_mask_get(mask, i);
|
||||
+
|
||||
+ if (i == 0) {
|
||||
+ calib_min = pEvdev->calibration.min_x;
|
||||
+ calib_max = pEvdev->calibration.max_x;
|
||||
+ } else {
|
||||
+ calib_min = pEvdev->calibration.min_y;
|
||||
+ calib_max = pEvdev->calibration.max_y;
|
||||
+ }
|
||||
+
|
||||
+ if (pEvdev->flags & EVDEV_CALIBRATED)
|
||||
+ val = xf86ScaleAxis(val, pEvdev->absinfo[i].maximum,
|
||||
+ pEvdev->absinfo[i].minimum, calib_max,
|
||||
+ calib_min);
|
||||
+
|
||||
+ if ((i == 0 && pEvdev->invert_x) || (i == 1 && pEvdev->invert_y))
|
||||
+ val = (pEvdev->absinfo[i].maximum - val +
|
||||
+ pEvdev->absinfo[i].minimum);
|
||||
+
|
||||
+ valuator_mask_set(mask, i, val);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Take the valuators and process them accordingly.
|
||||
*/
|
||||
@@ -524,39 +560,8 @@ EvdevProcessValuators(InputInfoPtr pInfo)
|
||||
* just works.
|
||||
*/
|
||||
else if (pEvdev->abs_queued && pEvdev->in_proximity) {
|
||||
- int i;
|
||||
-
|
||||
EvdevSwapAbsValuators(pEvdev, pEvdev->vals);
|
||||
-
|
||||
- for (i = 0; i <= 1; i++) {
|
||||
- int val;
|
||||
- int calib_min;
|
||||
- int calib_max;
|
||||
-
|
||||
- if (!valuator_mask_isset(pEvdev->vals, i))
|
||||
- continue;
|
||||
-
|
||||
- val = valuator_mask_get(pEvdev->vals, i);
|
||||
-
|
||||
- if (i == 0) {
|
||||
- calib_min = pEvdev->calibration.min_x;
|
||||
- calib_max = pEvdev->calibration.max_x;
|
||||
- } else {
|
||||
- calib_min = pEvdev->calibration.min_y;
|
||||
- calib_max = pEvdev->calibration.max_y;
|
||||
- }
|
||||
-
|
||||
- if (pEvdev->flags & EVDEV_CALIBRATED)
|
||||
- val = xf86ScaleAxis(val, pEvdev->absinfo[i].maximum,
|
||||
- pEvdev->absinfo[i].minimum, calib_max,
|
||||
- calib_min);
|
||||
-
|
||||
- if ((i == 0 && pEvdev->invert_x) || (i == 1 && pEvdev->invert_y))
|
||||
- val = (pEvdev->absinfo[i].maximum - val +
|
||||
- pEvdev->absinfo[i].minimum);
|
||||
-
|
||||
- valuator_mask_set(pEvdev->vals, i, val);
|
||||
- }
|
||||
+ EvdevApplyCalibration(pEvdev, pEvdev->vals);
|
||||
Evdev3BEmuProcessAbsMotion(pInfo, pEvdev->vals);
|
||||
}
|
||||
}
|
||||
--
|
||||
1.8.1
|
@ -1,30 +0,0 @@
|
||||
From 67e5376aaa62a1586fee37d610b3ad7e3b8bbcab Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Mon, 14 Jan 2013 14:45:58 +1000
|
||||
Subject: [PATCH evdev 4/4] Handle axis swap, calibration, and inversion for
|
||||
touch events (#59340)
|
||||
|
||||
X.Org Bug 59340 <http://bugs.freedesktop.org/show_bug.cgi?id=59340>
|
||||
|
||||
Reported-by: Bastien Nocera <hadess@hadess.net>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
src/evdev.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index 1581d47..c689257 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -744,6 +744,9 @@ EvdevProcessTouch(InputInfoPtr pInfo)
|
||||
type = XI_TouchUpdate;
|
||||
|
||||
|
||||
+ EvdevSwapAbsValuators(pEvdev, pEvdev->mt_mask);
|
||||
+ EvdevApplyCalibration(pEvdev, pEvdev->mt_mask);
|
||||
+
|
||||
EvdevQueueTouchEvent(pInfo, pEvdev->cur_slot, pEvdev->mt_mask, type);
|
||||
|
||||
pEvdev->slot_state = SLOTSTATE_EMPTY;
|
||||
--
|
||||
1.8.1
|
2
commitid
2
commitid
@ -1 +1 @@
|
||||
f5ede98085688b59dc56a9cc6592f75552a4e7ed
|
||||
c085c8b6c1f8e95f6f4d91bc65268fe57154018c
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
f68920ce2921a88b4662acc972bf3a4a xf86-input-evdev-2.7.3.tar.bz2
|
||||
7ff3274e7b3221d160a3c476fdb9b3ca xf86-input-evdev-20130214.tar.bz2
|
||||
|
@ -2,13 +2,13 @@
|
||||
%global moduledir %(pkg-config xorg-server --variable=moduledir )
|
||||
%global driverdir %{moduledir}/input
|
||||
|
||||
#global gitdate 20120718
|
||||
#global gitversion f5ede9808
|
||||
%global gitdate 20130214
|
||||
%global gitversion c085c8b6c
|
||||
|
||||
Summary: Xorg X11 evdev input driver
|
||||
Name: xorg-x11-drv-evdev
|
||||
Version: 2.7.3
|
||||
Release: 5%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
||||
Version: 2.7.99
|
||||
Release: 1%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X Hardware Support
|
||||
@ -21,17 +21,6 @@ Source2: commitid
|
||||
Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
|
||||
%endif
|
||||
|
||||
# Bug 805902 - Scrollwheels on tablets are broken
|
||||
Patch02: 0001-Allow-relative-scroll-valuators-on-absolute-devices.patch
|
||||
# fdo 58967 - Device with MT axes but no buttons triggers BUG macro
|
||||
Patch03: 0001-Force-a-button-if-MT-axes-are-present-and-it-is-not-.patch
|
||||
# Fix axis inversion/swapping (i.e. device rotation) for touch devices
|
||||
Patch04: 0001-Localise-tmp-variable.patch
|
||||
Patch05: 0002-Move-valuator-swapping-into-a-helper-function.patch
|
||||
Patch06: 0003-Move-calibration-adjustments-to-helper-function.patch
|
||||
Patch07: 0004-Handle-axis-swap-calibration-and-inversion-for-touch.patch
|
||||
|
||||
|
||||
ExcludeArch: s390 s390x %{?rhel:ppc ppc64}
|
||||
|
||||
BuildRequires: autoconf automake libtool
|
||||
@ -49,12 +38,6 @@ X.Org X11 evdev input driver.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
|
||||
%patch02 -p1 -b .relscroll
|
||||
%patch03 -p1
|
||||
%patch04 -p1
|
||||
%patch05 -p1
|
||||
%patch06 -p1
|
||||
%patch07 -p1
|
||||
|
||||
%build
|
||||
autoreconf --force -v --install || exit 1
|
||||
@ -96,6 +79,9 @@ X.Org X11 evdev input driver development files.
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Feb 14 2013 Peter Hutterer <peter.hutterer@redhat.com> 2.7.99-1.20130214gitc085c8b6c
|
||||
- Today's git snapshot
|
||||
|
||||
* Mon Jan 14 2013 Peter Hutterer <peter.hutterer@redhat.com> 2.7.3-5
|
||||
- Fix device rotation through SwapAxes/Invert{X|Y} for touch devices
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user