[PATCH libinput] evdev: use the udev ID_INPUT_POINTINGSTICK property
Benjamin Tissoires
benjamin.tissoires at gmail.com
Fri May 29 08:06:15 PDT 2015
On 05/29/2015 03:31 AM, Hans de Goede wrote:
> Hi,
>
> On 29-05-15 03:28, Peter Hutterer wrote:
>> Added in systemd 220, but note that for udev backwards compatibility, the
>> ID_INPUT_POINTINGSTICK tag is set in addition to the ID_INPUT_MOUSE tag.
>>
>> And use that property to tag a device as trackpoint too, this allows
>> temporary
>> workarounds for kernel bugs where the input prop isn't set yet.
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=1225563
>>
>> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>
> LGTM: Reviewed-by: Hans de Goede <hdegoede at redhat.com>
>
Yep, as Hans said, this looks good to me (it's already push, so that
does not matter that much).
However, for completeness, if we want to be able to override the
INPUT_PROP_POINTING_STICK property, we also need the following patch:
>From 9573bfb574a74e2eea89a9227aaf67c1c9403983 Mon Sep 17 00:00:00 2001
From: Benjamin Tissoires <benjamin.tissoires at gmail.com>
Date: Fri, 29 May 2015 11:02:12 -0400
Subject: [PATCH] evdev: remove direct checks for INPUT_PROP_POINTING_STICK
If we need to temporary override a device with ID_INPUT_POINTINGSTICK,
evdev sets the tag EVDEV_TAG_TRACKPOINT to the device. Rely on the tag
to behave properly for scroll emulation.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>
---
src/evdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/evdev.c b/src/evdev.c
index 642f441..a996bcf 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1070,7 +1070,7 @@ evdev_scroll_get_default_method(struct libinput_device *device)
{
struct evdev_device *evdev = (struct evdev_device *)device;
- if (libevdev_has_property(evdev->evdev, INPUT_PROP_POINTING_STICK))
+ if (evdev->tags & EVDEV_TAG_TRACKPOINT)
return LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN;
/* Mice without a scroll wheel but with middle button have on-button
@@ -1110,7 +1110,7 @@ evdev_scroll_get_default_button(struct libinput_device *device)
{
struct evdev_device *evdev = (struct evdev_device *)device;
- if (libevdev_has_property(evdev->evdev, INPUT_PROP_POINTING_STICK))
+ if (evdev->tags & EVDEV_TAG_TRACKPOINT)
return BTN_MIDDLE;
/* A device that defaults to button scrolling defaults
@@ -1505,7 +1505,7 @@ evdev_read_dpi_prop(struct evdev_device *device)
* POINTINGSTICK_CONST_ACCEL value to compensate for sensitivity
* differences between models, we translate this to a fake dpi.
*/
- if (libevdev_has_property(device->evdev, INPUT_PROP_POINTING_STICK))
+ if (device->tags & EVDEV_TAG_TRACKPOINT)
return evdev_get_trackpoint_dpi(device);
mouse_dpi = udev_device_get_property_value(device->udev_device,
--
2.4.0
Cheers,
Benjamin
More information about the wayland-devel
mailing list