Fix axis labelling and single-axis relative devices
This commit is contained in:
parent
4cf85ac7e1
commit
989a2ebe29
70
0001-Fix-axis-labelling-for-mixed-devices.patch
Normal file
70
0001-Fix-axis-labelling-for-mixed-devices.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From be53e80fafbc1474f07737fa5817275ad79d9323 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Thu, 12 Jan 2012 11:01:22 +1000
|
||||||
|
Subject: [PATCH] Fix axis labelling for mixed devices.
|
||||||
|
|
||||||
|
If a device has both relative and absolute axes, we'd initialise the
|
||||||
|
relative axes but label them with the absolute labels.
|
||||||
|
Fix this by properly unsetting the flags before we initialise the axes and
|
||||||
|
then restoring them on failure.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
---
|
||||||
|
src/evdev.c | 15 ++++++++++++---
|
||||||
|
1 files changed, 12 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/evdev.c b/src/evdev.c
|
||||||
|
index 989a255..86a9e55 100644
|
||||||
|
--- a/src/evdev.c
|
||||||
|
+++ b/src/evdev.c
|
||||||
|
@@ -1628,12 +1628,18 @@ static void
|
||||||
|
EvdevInitAbsValuators(DeviceIntPtr device, EvdevPtr pEvdev)
|
||||||
|
{
|
||||||
|
InputInfoPtr pInfo = device->public.devicePrivate;
|
||||||
|
+ int has_rel_axes = pEvdev->flags & EVDEV_RELATIVE_EVENTS;
|
||||||
|
+
|
||||||
|
+ pEvdev->flags &= ~EVDEV_RELATIVE_EVENTS;
|
||||||
|
|
||||||
|
if (EvdevAddAbsValuatorClass(device) == Success) {
|
||||||
|
xf86IDrvMsg(pInfo, X_INFO,"initialized for absolute axes.\n");
|
||||||
|
} else {
|
||||||
|
xf86IDrvMsg(pInfo, X_ERROR,"failed to initialize for absolute axes.\n");
|
||||||
|
pEvdev->flags &= ~EVDEV_ABSOLUTE_EVENTS;
|
||||||
|
+
|
||||||
|
+ if (has_rel_axes)
|
||||||
|
+ pEvdev->flags |= EVDEV_RELATIVE_EVENTS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1643,14 +1649,14 @@ EvdevInitRelValuators(DeviceIntPtr device, EvdevPtr pEvdev)
|
||||||
|
InputInfoPtr pInfo = device->public.devicePrivate;
|
||||||
|
int has_abs_axes = pEvdev->flags & EVDEV_ABSOLUTE_EVENTS;
|
||||||
|
|
||||||
|
+ pEvdev->flags &= ~EVDEV_ABSOLUTE_EVENTS;
|
||||||
|
+
|
||||||
|
if (EvdevAddRelValuatorClass(device) == Success) {
|
||||||
|
|
||||||
|
xf86IDrvMsg(pInfo, X_INFO,"initialized for relative axes.\n");
|
||||||
|
|
||||||
|
- if (has_abs_axes) {
|
||||||
|
+ if (has_abs_axes)
|
||||||
|
xf86IDrvMsg(pInfo, X_WARNING,"ignoring absolute axes.\n");
|
||||||
|
- pEvdev->flags &= ~EVDEV_ABSOLUTE_EVENTS;
|
||||||
|
- }
|
||||||
|
|
||||||
|
} else {
|
||||||
|
xf86IDrvMsg(pInfo, X_ERROR,"failed to initialize for relative axes.\n");
|
||||||
|
@@ -1658,7 +1664,10 @@ EvdevInitRelValuators(DeviceIntPtr device, EvdevPtr pEvdev)
|
||||||
|
pEvdev->flags &= ~EVDEV_RELATIVE_EVENTS;
|
||||||
|
|
||||||
|
if (has_abs_axes)
|
||||||
|
+ {
|
||||||
|
+ pEvdev->flags |= EVDEV_ABSOLUTE_EVENTS;
|
||||||
|
EvdevInitAbsValuators(device, pEvdev);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.7.5
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
From dd3a14f13c21277e81c1e9c9c309a4e5b6924351 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Thu, 12 Jan 2012 11:03:30 +1000
|
||||||
|
Subject: [PATCH] Force REL_X/REL_Y to exist on devices with any relative axes
|
||||||
|
(#44655)
|
||||||
|
|
||||||
|
Too much in the server relies on x/y to exist and to be axes 0 and 1. Since
|
||||||
|
smooth scrolling we initialise wheels as axes too, so if any relative axes
|
||||||
|
exist, initialize REL_X/Y as well.
|
||||||
|
|
||||||
|
For servers up to 1.11: a scrollwheel-only device now has relative axes
|
||||||
|
where it only had buttons before.
|
||||||
|
|
||||||
|
For servers 1.12 or later: the device now has x/y in addition to the scroll
|
||||||
|
axes.
|
||||||
|
|
||||||
|
X.Org Bug 44655 <http://bugs.freedesktop.org/show_bug.cgi?id=44655>
|
||||||
|
|
||||||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
---
|
||||||
|
src/evdev.c | 11 +++++++++++
|
||||||
|
1 files changed, 11 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/evdev.c b/src/evdev.c
|
||||||
|
index 86a9e55..77609fb 100644
|
||||||
|
--- a/src/evdev.c
|
||||||
|
+++ b/src/evdev.c
|
||||||
|
@@ -2052,6 +2052,17 @@ EvdevProbe(InputInfoPtr pInfo)
|
||||||
|
pEvdev->num_buttons = num_buttons;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Some devices only have other rel axes (e.g. wheels), but we
|
||||||
|
+ * still need x/y for these. The server relies on devices having
|
||||||
|
+ * x/y as axes 0/1 and core/XI 1.x clients expect it too (#44655) */
|
||||||
|
+ if (!EvdevBitIsSet(pEvdev->rel_bitmask, REL_X) ||
|
||||||
|
+ !EvdevBitIsSet(pEvdev->rel_bitmask, REL_Y))
|
||||||
|
+ {
|
||||||
|
+ xf86IDrvMsg(pInfo, X_INFO, "Forcing x/y axes to exist.\n");
|
||||||
|
+ EvdevSetBit(pEvdev->rel_bitmask, REL_X);
|
||||||
|
+ EvdevSetBit(pEvdev->rel_bitmask, REL_Y);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!ignore_rel)
|
||||||
|
{
|
||||||
|
xf86IDrvMsg(pInfo, X_PROBED, "Found relative axes\n");
|
||||||
|
--
|
||||||
|
1.7.7.5
|
||||||
|
|
@ -8,7 +8,7 @@
|
|||||||
Summary: Xorg X11 evdev input driver
|
Summary: Xorg X11 evdev input driver
|
||||||
Name: xorg-x11-drv-evdev
|
Name: xorg-x11-drv-evdev
|
||||||
Version: 2.6.99.901
|
Version: 2.6.99.901
|
||||||
Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{dist}
|
Release: 4%{?gitdate:.%{gitdate}git%{gitversion}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X Hardware Support
|
Group: User Interface/X Hardware Support
|
||||||
@ -21,6 +21,9 @@ Source2: commitid
|
|||||||
Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
|
Source0: ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
Patch01: 0001-Fix-axis-labelling-for-mixed-devices.patch
|
||||||
|
Patch02: 0001-Force-REL_X-REL_Y-to-exist-on-devices-with-any-relat.patch
|
||||||
|
|
||||||
ExcludeArch: s390 s390x
|
ExcludeArch: s390 s390x
|
||||||
|
|
||||||
BuildRequires: autoconf automake libtool
|
BuildRequires: autoconf automake libtool
|
||||||
@ -39,6 +42,9 @@ X.Org X11 evdev input driver.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
|
%setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{!?gitdate:%{version}}
|
||||||
|
|
||||||
|
%patch01 -p1
|
||||||
|
%patch02 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -v --install || exit 1
|
autoreconf -v --install || exit 1
|
||||||
%configure --disable-static --disable-silent-rules
|
%configure --disable-static --disable-silent-rules
|
||||||
@ -79,6 +85,9 @@ X.Org X11 evdev input driver development files.
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 12 2012 Peter Hutterer <peter.hutterer@redhat.com> 2.6.99.901-4.20120103git965338e9d
|
||||||
|
- Fix axis labelling and single-axis relative devices
|
||||||
|
|
||||||
* Wed Jan 04 2012 Peter Hutterer <peter.hutterer@redhat.com> 2.6.99.901-3.20120103git965338e9d
|
* Wed Jan 04 2012 Peter Hutterer <peter.hutterer@redhat.com> 2.6.99.901-3.20120103git965338e9d
|
||||||
- Add mtdev as dependency
|
- Add mtdev as dependency
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user