The Trust TB7300 (relabelled Waltop?) tablet has a scrollwheel which shows
up as a /dev/input/event# node all by itself. Currently input_id does not
set any ID_INPUT_FOO attr on this causing it it to not be recognized by
Xorg / libinput.

This commit fixes this by marking it with ID_INPUT_KEY.

Cc: Sjoerd Timmer <the...@randomdata.nl>
Reported-by: Sjoerd Timmer <the...@randomdata.nl>
Signed-off-by: Hans de Goede <hdego...@redhat.com>
---
 src/udev/udev-builtin-input_id.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
index ecfc447..f07f86e 100644
--- a/src/udev/udev-builtin-input_id.c
+++ b/src/udev/udev-builtin-input_id.c
@@ -262,6 +262,13 @@ static int builtin_input_id(struct udev_device *dev, int 
argc, char *argv[], boo
                 test_pointers(dev, bitmask_ev, bitmask_abs, bitmask_key,
                               bitmask_rel, bitmask_props, test);
                 test_key(dev, bitmask_ev, bitmask_key, test);
+                /*
+                 * The scrollwheel on some devices is a device all by itself,
+                 * treat this as a keyboard with just a scrollwheel.
+                 */
+                if (bitmask_ev[0] == (BIT(EV_REL) | BIT(EV_SYN)) &&
+                    bitmask_rel[0] == (bitmask_rel[0] & (BIT(REL_WHEEL) | 
BIT(REL_HWHEEL))))
+                        udev_builtin_add_property(dev, test, "ID_INPUT_KEY", 
"1");
         }
 
         devnode = udev_device_get_devnode(dev);
-- 
2.3.4

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to