From b59a1a25dad4437e013ce8d3d65d4591c6f4ee4a Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 2 Apr 2013 14:12:26 +1000 Subject: 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 --- src/evdev.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/evdev.c') diff --git a/src/evdev.c b/src/evdev.c index 052e9f0..94f5499 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2548,6 +2548,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); } @@ -2579,6 +2582,8 @@ EvdevAlloc(void) pEvdev->rel_axis_map[0] = 0; pEvdev->rel_axis_map[1] = 1; + pEvdev->type_name = NULL; + return pEvdev; } @@ -2623,6 +2628,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) -- cgit v1.2.3