mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 00:51:24 +03:00
input_id: Identify scroll-wheel device on Trust TB7300 tablet as keyboard
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. Reported-by: Sjoerd Timmer <themba@randomdata.nl>
This commit is contained in:
parent
941a2aca3d
commit
37186823f3
@ -265,6 +265,8 @@ static int builtin_input_id(struct udev_device *dev, int argc, char *argv[], boo
|
||||
unsigned long bitmask_rel[NBITS(REL_MAX)];
|
||||
unsigned long bitmask_props[NBITS(INPUT_PROP_MAX)];
|
||||
const char *sysname, *devnode;
|
||||
bool is_pointer;
|
||||
bool is_key;
|
||||
|
||||
/* walk up the parental chain until we find the real input device; the
|
||||
* argument is very likely a subdevice of this, like eventN */
|
||||
@ -281,9 +283,14 @@ static int builtin_input_id(struct udev_device *dev, int argc, char *argv[], boo
|
||||
get_cap_mask(dev, pdev, "capabilities/rel", bitmask_rel, sizeof(bitmask_rel), test);
|
||||
get_cap_mask(dev, pdev, "capabilities/key", bitmask_key, sizeof(bitmask_key), test);
|
||||
get_cap_mask(dev, pdev, "properties", bitmask_props, sizeof(bitmask_props), test);
|
||||
test_pointers(dev, bitmask_ev, bitmask_abs, bitmask_key,
|
||||
bitmask_rel, bitmask_props, test);
|
||||
test_key(dev, bitmask_ev, bitmask_key, test);
|
||||
is_pointer = test_pointers(dev, bitmask_ev, bitmask_abs,
|
||||
bitmask_key, bitmask_rel,
|
||||
bitmask_props, test);
|
||||
is_key = test_key(dev, bitmask_ev, bitmask_key, test);
|
||||
/* Some evdev nodes have only a scrollwheel */
|
||||
if (!is_pointer && !is_key && test_bit(EV_REL, bitmask_ev) &&
|
||||
(test_bit(REL_WHEEL, bitmask_rel) || test_bit(REL_HWHEEL, bitmask_rel)))
|
||||
udev_builtin_add_property(dev, test, "ID_INPUT_KEY", "1");
|
||||
}
|
||||
|
||||
devnode = udev_device_get_devnode(dev);
|
||||
|
Loading…
Reference in New Issue
Block a user