diff --git a/0001-Add-option-TypeName-62831.patch b/0001-Add-option-TypeName-62831.patch new file mode 100644 index 0000000..57f7f79 --- /dev/null +++ b/0001-Add-option-TypeName-62831.patch @@ -0,0 +1,95 @@ +From 4116cb799a8cb16c6b721ec545e875f67721bb94 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Tue, 2 Apr 2013 14:12:26 +1000 +Subject: [PATCH evdev] Add option TypeName (#62831) + +evdev tries to assign the right XI 1.x type-name based on various device +capabilities. In some cases, that fails. e.g. the Mionix Naos 5000 mouse +looks like a keyboard. And we assign a keyboard type in that case since +there are plenty of keyboards that also advertise some axes or others. + +Add a new option TypeName to allow for system-wide configuration of such +devices in a quirks file. + +This can also be used to address #55867 + +X.Org Bug 62831 + +Signed-off-by: Peter Hutterer +--- + man/evdev.man | 6 ++++++ + src/evdev.c | 13 +++++++++++++ + src/evdev.h | 2 ++ + 3 files changed, 21 insertions(+) + +diff --git a/man/evdev.man b/man/evdev.man +index 2709d7a..220dd13 100644 +--- a/man/evdev.man ++++ b/man/evdev.man +@@ -220,6 +220,12 @@ is mapped to the negative Y axis motion and button number + .I N2 + is mapped to the positive Y axis motion. Default: "4 5". Property: + "Evdev Wheel Emulation Axes". ++.TP 7 ++.BI "Option \*qTypeName\*q \*q"type"\*q ++Specify the X Input 1.x type (see XListInputDevices(__libmansuffix__)). ++There is rarely a need to use this option, evdev will guess the device type ++based on the device's capabilities. This option is provided for devices that ++need quirks. + + .SH SUPPORTED PROPERTIES + The following properties are provided by the +diff --git a/src/evdev.c b/src/evdev.c +index 235db71..08c5384 100644 +--- a/src/evdev.c ++++ b/src/evdev.c +@@ -2554,6 +2554,9 @@ EvdevUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) + /* Release string allocated in EvdevOpenDevice. */ + free(pEvdev->device); + pEvdev->device = NULL; ++ ++ free(pEvdev->type_name); ++ pEvdev->type_name = NULL; + } + xf86DeleteInput(pInfo, flags); + } +@@ -2585,6 +2588,8 @@ EvdevAlloc(void) + pEvdev->rel_axis_map[0] = 0; + pEvdev->rel_axis_map[1] = 1; + ++ pEvdev->type_name = NULL; ++ + return pEvdev; + } + +@@ -2629,6 +2634,14 @@ EvdevPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) + goto error; + } + ++ /* Overwrite type_name with custom-defined one (#62831). ++ Note: pInfo->type_name isn't freed so we need to manually do this ++ */ ++ pEvdev->type_name = xf86SetStrOption(pInfo->options, ++ "TypeName", ++ pInfo->type_name); ++ pInfo->type_name = pEvdev->type_name; ++ + EvdevAddDevice(pInfo); + + if (pEvdev->flags & EVDEV_BUTTON_EVENTS) +diff --git a/src/evdev.h b/src/evdev.h +index 63c3bfa..6ae389c 100644 +--- a/src/evdev.h ++++ b/src/evdev.h +@@ -251,6 +251,8 @@ typedef struct { + EventQueueRec queue[EVDEV_MAXQUEUE]; + + enum fkeymode fkeymode; ++ ++ char *type_name; + } EvdevRec, *EvdevPtr; + + /* Event posting functions */ +-- +1.8.1.4 + diff --git a/xorg-x11-drv-evdev.spec b/xorg-x11-drv-evdev.spec index eeabaf3..14a21d4 100644 --- a/xorg-x11-drv-evdev.spec +++ b/xorg-x11-drv-evdev.spec @@ -8,7 +8,7 @@ Summary: Xorg X11 evdev input driver Name: xorg-x11-drv-evdev Version: 2.8.0 -Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} +Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X Hardware Support @@ -82,6 +82,9 @@ X.Org X11 evdev input driver development files. %changelog +* Mon Apr 15 2013 Peter Hutterer 2.8.0-3 +- With the patch file + * Mon Apr 15 2013 Peter Hutterer 2.8.0-2 - Add option Type name to auto-assign XI_TRACKBALL