Merge remote-tracking branch 'upstream/main' into 2026-thumb-regression-fixes

This commit is contained in:
Matt Mayfield 2026-03-10 21:51:26 -04:00
commit 1a0dbd498c
116 changed files with 625 additions and 71 deletions

View file

@ -124,6 +124,12 @@ button lock, the button is now considered logically held down. Pressing and
releasing the button a second time logically releases the button. While the
button is logically held down, motion events are converted to scroll events.
If the button is held and used to scroll for longer than a short grace
period, releasing the button does not engage the lock. This allows
hold-to-scroll for short, precise adjustments without accidentally toggling
the lock. A quick click or a brief scroll within the grace period still
engages the lock as normal.
.. _scroll_sources:
------------------------------------------------------------------------------

View file

@ -2,6 +2,15 @@
# "GXTP5100 Touchpad": pressure touchpad mostly used in Lenovo laptops.
# Match vid and pid as it can have other names.
[Goodix Haptic Touchpad (27C6:01E7)]
MatchBus=i2c
MatchVendor=0x27C6
MatchProduct=0x01E7
MatchUdevType=touchpad
AttrInputProp=+INPUT_PROP_PRESSUREPAD
# "GXTP5100 Touchpad": pressure touchpad mostly used in Lenovo laptops.
# GXTP5100:00 27C6:01E8 Touchpad
[Goodix Haptic Touchpad (27C6:01E8)]
MatchBus=i2c
MatchVendor=0x27C6
@ -9,6 +18,33 @@ MatchProduct=0x01E8
MatchUdevType=touchpad
AttrInputProp=+INPUT_PROP_PRESSUREPAD
# "GXTP5100 Touchpad": pressure touchpad mostly used in Lenovo laptops.
# GXTP5100:00 27C6:01E9 Touchpad
[Goodix Haptic Touchpad (27C6:01E9)]
MatchBus=i2c
MatchVendor=0x27C6
MatchProduct=0x01E9
MatchUdevType=touchpad
AttrInputProp=+INPUT_PROP_PRESSUREPAD
# "GXTP5100 Touchpad": pressure touchpad mostly used in Lenovo laptops.
# GXTP5100:00 27C6:01EA Touchpad
[Goodix Haptic Touchpad (27C6:01EA)]
MatchBus=i2c
MatchVendor=0x27C6
MatchProduct=0x01EA
MatchUdevType=touchpad
AttrInputProp=+INPUT_PROP_PRESSUREPAD
# "GXTP5100 Touchpad": pressure touchpad mostly used in Lenovo laptops.
# GXTP5100:00 27C6:01EB Touchpad
[Goodix Haptic Touchpad (27C6:01EB)]
MatchBus=i2c
MatchVendor=0x27C6
MatchProduct=0x01EB
MatchUdevType=touchpad
AttrInputProp=+INPUT_PROP_PRESSUREPAD
# "GXTP5420 Touchpad": pressure touchpad mostly used in Lenovo laptops.
# GXTP5420:00 27C6:0F95 Touchpad
[Goodix Haptic Touchpad (27C6:0F95)]

View file

@ -2678,6 +2678,22 @@ evdev_tag_touchpad(struct evdev_device *device, struct udev_device *udev_device)
int bustype, vendor;
const char *prop;
prop = udev_device_get_property_value(udev_device, "ID_INTEGRATION");
if (prop) {
if (streq(prop, "internal")) {
evdev_tag_touchpad_internal(device);
return;
}
if (streq(prop, "external")) {
evdev_tag_touchpad_external(device);
return;
}
evdev_log_info(device, "tagged with unknown value %s\n", prop);
}
/* Fall back to ID_TOUCHPAD_INTEGRATION if ID_INTEGRATION is missing */
prop = udev_device_get_property_value(udev_device,
"ID_INPUT_TOUCHPAD_INTEGRATION");
if (prop) {

View file

@ -54,6 +54,7 @@
#define DEFAULT_WHEEL_CLICK_ANGLE 15
#define DEFAULT_BUTTON_SCROLL_TIMEOUT usec_from_millis(200)
#define SCROLL_BUTTON_LOCK_GRACE_TIMEOUT usec_from_millis(500)
enum evdev_device_udev_tags {
EVDEV_UDEV_TAG_NONE = 0,
@ -228,6 +229,15 @@ evdev_button_scroll_button(struct evdev_device *device, usec_t time, int is_pres
break; /* handle event */
case BUTTONSCROLL_LOCK_FIRSTDOWN:
assert(!is_press);
if (device->scroll.button_scroll_state == BUTTONSCROLL_SCROLLING &&
usec_cmp(usec_delta(time, device->scroll.button_down_time),
SCROLL_BUTTON_LOCK_GRACE_TIMEOUT) >= 0) {
/* held + scrolled past grace period: temporary scroll,
* no lock engaged */
device->scroll.lock_state = BUTTONSCROLL_LOCK_IDLE;
evdev_log_debug(device, "scroll lock: temp scroll done\n");
break; /* pass release through */
}
device->scroll.lock_state = BUTTONSCROLL_LOCK_FIRSTUP;
evdev_log_debug(device, "scroll lock: first up\n");
return; /* filter release event */
@ -489,6 +499,7 @@ static void
evdev_tag_trackpoint(struct evdev_device *device, struct udev_device *udev_device)
{
char *prop;
const char *udev_prop;
if (!libevdev_has_property(device->evdev, INPUT_PROP_POINTING_STICK) &&
!parse_udev_flag(device, udev_device, "ID_INPUT_POINTINGSTICK"))
@ -496,10 +507,22 @@ evdev_tag_trackpoint(struct evdev_device *device, struct udev_device *udev_devic
device->tags |= EVDEV_TAG_TRACKPOINT;
udev_prop = udev_device_get_property_value(udev_device, "ID_INTEGRATION");
if (udev_prop) {
if (streq(udev_prop, "internal")) {
/* noop, this is the default anyway */
} else if (streq(udev_prop, "external"))
device->tags |= EVDEV_TAG_EXTERNAL_MOUSE;
else
evdev_log_info(device,
"tagged with unknown value %s\n",
udev_prop);
}
_unref_(quirks) *q = libinput_device_get_quirks(&device->base);
if (q && quirks_get_string(q, QUIRK_ATTR_TRACKPOINT_INTEGRATION, &prop)) {
if (streq(prop, "internal")) {
/* noop, this is the default anyway */
device->tags &= ~EVDEV_TAG_EXTERNAL_MOUSE;
} else if (streq(prop, "external")) {
device->tags |= EVDEV_TAG_EXTERNAL_MOUSE;
evdev_log_info(device, "is an external pointing stick\n");
@ -527,6 +550,7 @@ static void
evdev_tag_keyboard(struct evdev_device *device, struct udev_device *udev_device)
{
char *prop;
const char *udev_prop;
int code;
if (!libevdev_has_event_type(device->evdev, EV_KEY))
@ -537,6 +561,18 @@ evdev_tag_keyboard(struct evdev_device *device, struct udev_device *udev_device)
return;
}
udev_prop = udev_device_get_property_value(udev_device, "ID_INTEGRATION");
if (udev_prop) {
if (streq(udev_prop, "internal"))
evdev_tag_keyboard_internal(device);
else if (streq(udev_prop, "external"))
evdev_tag_keyboard_external(device);
else
evdev_log_info(device,
"tagged with unknown value %s\n",
udev_prop);
}
_unref_(quirks) *q = libinput_device_get_quirks(&device->base);
if (q && quirks_get_string(q, QUIRK_ATTR_KEYBOARD_INTEGRATION, &prop)) {
if (streq(prop, "internal")) {

View file

@ -6624,7 +6624,9 @@ enum libinput_config_scroll_button_lock_state {
* If the state is
* @ref LIBINPUT_CONFIG_SCROLL_BUTTON_LOCK_ENABLED, the button is considered
* logically down after the first press and release sequence, and logically
* up after the second press and release sequence.
* up after the second press and release sequence. If the button is held
* and used to scroll for longer than a short grace period, releasing the
* button does not engage the lock.
*
* @param device The device to configure
* @param state The state to set the scroll button lock to

View file

@ -75,5 +75,6 @@ TEST_DEVICE(LITEST_ABSINFO_OVERRIDE,
{ "EVDEV_ABS_01", "2:2000:200:20" },
{ "EVDEV_ABS_35", "3:3000:300:30" },
{ "EVDEV_ABS_36", "4:4000:400:40" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -197,4 +197,8 @@ TEST_DEVICE(LITEST_ACER_HAWAII_KEYBOARD,
.name = "Chicony ACER Hawaii Keyboard",
.id = &input_id,
.events = events,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -93,4 +93,8 @@ TEST_DEVICE(LITEST_ACER_HAWAII_TOUCHPAD,
.name = "Chicony ACER Hawaii Keyboard Touchpad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -157,4 +157,8 @@ TEST_DEVICE(LITEST_AIPTEK,
.name = "Aiptek",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -173,4 +173,8 @@ TEST_DEVICE(LITEST_ALPS_3FG,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.create = alps_create, )
.create = alps_create,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -120,4 +120,8 @@ TEST_DEVICE(LITEST_ALPS_DUALPOINT,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.quirk_file = quirk_file, )
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -113,4 +113,8 @@ TEST_DEVICE(LITEST_ALPS_SEMI_MT,
.name = "AlpsPS/2 ALPS GlidePoint",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -218,4 +218,8 @@ TEST_DEVICE(LITEST_ANKER_MOUSE_KBD,
.name = "USB Laser Game Mouse",
.id = &input_id,
.absinfo = absinfo,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -100,4 +100,8 @@ TEST_DEVICE(LITEST_APPLETOUCH,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.quirk_file = quirk_file, )
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -226,4 +226,8 @@ TEST_DEVICE(LITEST_APPLE_KEYBOARD,
.name = "Apple Inc. Apple Internal Keyboard / Trackpad",
.id = &input_id,
.events = events,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -100,5 +100,6 @@ TEST_DEVICE(LITEST_MAGICMOUSE,
* re-writing those, so let's assume the default */
.udev_properties = {
{ "MOUSE_DPI", "1000" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -323,4 +323,8 @@ TEST_DEVICE(LITEST_MOUSE_GLADIUS,
.name = "ASUS ROG GLADIUS",
.id = &input_id,
.absinfo = absinfo,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -132,4 +132,8 @@ TEST_DEVICE(LITEST_ATMEL_HOVER,
.name = "Atmel maXTouch Touchpad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -127,4 +127,8 @@ TEST_DEVICE(LITEST_BCM5974,
.name = "bcm5974",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -85,5 +85,6 @@ TEST_DEVICE(LITEST_CALIBRATED_TOUCHSCREEN,
.udev_properties = {
{ "LIBINPUT_CALIBRATION_MATRIX", "1.2 3.4 5.6 7.8 9.10 11.12" },
{ "WL_OUTPUT", "myOutput" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -58,4 +58,8 @@ TEST_DEVICE(LITEST_CYBORG_RAT,
.name = "Saitek Cyborg R.A.T.5 Mouse",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -90,5 +90,6 @@ TEST_DEVICE(LITEST_DELL_CANVAS_TOTEM_TOUCH,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "dell-canvas-totem-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -127,5 +127,6 @@ TEST_DEVICE(LITEST_DELL_CANVAS_TOTEM,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "dell-canvas-totem-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -146,4 +146,8 @@ TEST_DEVICE(LITEST_ELAN_TABLET,
.name = "ELAN2514:00 04F3:23B9",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -109,4 +109,8 @@ TEST_DEVICE(LITEST_ELANTECH_TOUCHPAD,
.name = "ETPS/2 Elantech Touchpad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -53,4 +53,8 @@ TEST_DEVICE(LITEST_MOUSE_FORMAT_STRING,
.name = "Evil %s %d %x Mouse %p %",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -123,4 +123,8 @@ TEST_DEVICE(LITEST_GENERIC_PRESSUREPAD,
.name = "Some Generic Pressurepad Touchpad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -76,4 +76,8 @@ TEST_DEVICE(LITEST_GENERIC_SINGLETOUCH,
.name = "generic_singletouch",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -198,4 +198,8 @@ TEST_DEVICE(LITEST_GENERIC_USBCOMBO_KEYBOARD,
.name = "Generic USB KeyTouch Combo",
.id = &input_id,
.events = events,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -100,7 +100,7 @@ TEST_DEVICE(LITEST_GENERIC_USBCOMBO_TOUCHPAD,
.events = events,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INPUT_TOUCHPAD_INTEGRATION", "external" },
{ "ID_INTEGRATION", "external" },
{ NULL },
},
.quirk_file = quirk_file, )

View file

@ -61,5 +61,6 @@ TEST_DEVICE(LITEST_GPIO_KEYS,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
})

View file

@ -60,5 +60,6 @@ TEST_DEVICE(LITEST_HP_WMI_HOTKEYS,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
})

View file

@ -108,4 +108,8 @@ TEST_DEVICE(LITEST_HUION_TABLET,
.name = "HUION PenTablet Pen",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -78,5 +78,6 @@ TEST_DEVICE(LITEST_HUION_Q620M_DIAL,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -54,5 +54,6 @@ TEST_DEVICE(LITEST_IGNORED_MOUSE,
.events = events,
.udev_properties = {
{ "LIBINPUT_IGNORE_DEVICE", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -45,7 +45,11 @@ TEST_DEVICE(LITEST_KEYBOARD_ALL_CODES,
.name = NAME,
.id = &input_id,
.events = NULL,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )
static bool
all_codes_create(struct litest_device *d)

View file

@ -250,4 +250,8 @@ TEST_DEVICE(LITEST_KEYBOARD_QUIRKED,
.id = &input_id,
.events = events,
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
},
.quirk_file = quirk_file, )

View file

@ -343,4 +343,8 @@ TEST_DEVICE(LITEST_KEYBOARD_BLACKWIDOW,
.name = "Razer Razer BlackWidow 2013",
.id = &input_id,
.absinfo = absinfo,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -215,4 +215,8 @@ TEST_DEVICE(LITEST_KEYBOARD_BLADE_STEALTH_VIDEOSWITCH,
.name = "Razer Razer Blade Stealth",
.id = &input_id,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -341,4 +341,8 @@ TEST_DEVICE(LITEST_KEYBOARD_BLADE_STEALTH,
.name = "Razer Razer Blade Stealth",
.id = &input_id,
.absinfo = absinfo,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -202,4 +202,8 @@ TEST_DEVICE(LITEST_KEYBOARD,
.name = "AT Translated Set 2 keyboard",
.id = &input_id,
.events = events,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -52,5 +52,6 @@ TEST_DEVICE(LITEST_KEYPAD_SLIDE_SWITCH,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -57,4 +57,8 @@ TEST_DEVICE(LITEST_LENOVO_SCROLLPOINT,
.name = "HID 04b3:3109",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -57,5 +57,6 @@ TEST_DEVICE(LITEST_LID_SWITCH_SURFACE3,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -56,5 +56,6 @@ TEST_DEVICE(LITEST_LID_SWITCH,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -88,4 +88,8 @@ TEST_DEVICE(LITEST_KEYBOARD_LOGITECH_MEDIA_KEYBOARD_ELITE,
.name = "Logitech Logitech USB Keyboard Consumer Control",
.id = &input_id,
.events = events,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -52,4 +52,8 @@ TEST_DEVICE(LITEST_LOGITECH_TRACKBALL,
.name = "Logitech USB Trackball",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -120,6 +120,6 @@ TEST_DEVICE(LITEST_MAGIC_TRACKPAD,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INPUT_TOUCHPAD_INTEGRATION", "external" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -57,5 +57,6 @@ TEST_DEVICE(LITEST_MOUSE_LOW_DPI,
.events = events,
.udev_properties = {
{ "MOUSE_DPI", "400@125" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -55,4 +55,8 @@ TEST_DEVICE(LITEST_MOUSE_PS2,
.name = "ImExPS/2 Generic Explorer Mouse",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -195,4 +195,8 @@ TEST_DEVICE(LITEST_MOUSE_ROCCAT,
.name = "ROCCAT ROCCAT Kone XTD",
.id = &input_id,
.absinfo = absinfo,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -52,4 +52,8 @@ TEST_DEVICE(LITEST_MOUSE_VIRTUAL,
.id = &input_id,
.events = events,
.absinfo = NULL,
.quirk_file = quirk_file, )
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -56,5 +56,6 @@ TEST_DEVICE(LITEST_MOUSE_WHEEL_CLICK_ANGLE,
.udev_properties = {
{ "MOUSE_WHEEL_CLICK_ANGLE", "-7" },
{ "MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL", "13" },
{ "ID_INTEGRATION", "external" },
{ NULL },
})

View file

@ -57,5 +57,6 @@ TEST_DEVICE(LITEST_MOUSE_WHEEL_CLICK_COUNT,
{ "MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL", "13" },
{ "MOUSE_WHEEL_CLICK_COUNT", "-14" },
{ "MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL", "27" },
{ "ID_INTEGRATION", "external" },
{ NULL },
})

View file

@ -60,4 +60,8 @@ TEST_DEVICE(LITEST_MOUSE_WHEEL_HIRES_DISABLED,
.id = &input_id,
.absinfo = NULL,
.events = events,
.quirk_file = quirk_file, )
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -56,5 +56,6 @@ TEST_DEVICE(LITEST_MOUSE_WHEEL_TILT,
.udev_properties = {
{ "MOUSE_WHEEL_TILT_HORIZONTAL", "1" },
{ "MOUSE_WHEEL_TILT_VERTICAL", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
})

View file

@ -52,4 +52,8 @@ TEST_DEVICE(LITEST_MOUSE,
.name = "Lenovo Optical USB Mouse",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -56,4 +56,8 @@ TEST_DEVICE(LITEST_MS_NANO_TRANSCEIVER_MOUSE,
.name = "Microsoft Microsoft® Nano Transceiver v2.0",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -382,4 +382,8 @@ TEST_DEVICE(LITEST_MS_SURFACE_COVER,
.name = "Microsoft Surface Type Cover",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -87,4 +87,8 @@ TEST_DEVICE(LITEST_NEXUS4_TOUCH_SCREEN,
.name = "Nexus 4 touch screen",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -127,4 +127,8 @@ TEST_DEVICE(LITEST_PLOOPY_PAVONIS_STYLUS,
.name = "Ploopy Corporation Ploopy Pavonis Trackpad Stylus",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -213,4 +213,8 @@ TEST_DEVICE(LITEST_PROTOCOL_A_SCREEN,
.name = "Protocol A touch screen",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -98,4 +98,8 @@ TEST_DEVICE(LITEST_QEMU_TABLET,
.name = "QEMU 0.12.1 QEMU USB Tablet",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -94,4 +94,8 @@ TEST_DEVICE(LITEST_SONY_VAIO_KEYS,
.name = "Sony Vaio Keys",
.id = &input_id,
.events = events,
.absinfo = NULL, )
.absinfo = NULL,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -112,4 +112,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_HOVER_SEMI_MT,
.name = "SynPS/2 Synaptics TouchPad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -96,4 +96,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_I2C,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
},
.quirk_file = quirk_file, )

View file

@ -99,4 +99,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_PHANTOMCLICKS,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
},
.quirk_file = quirk_file, )

View file

@ -123,4 +123,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_PRESSUREPAD,
.name = "SYNA2B31:00 06CB:CE37 Touchpad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -122,4 +122,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_RMI4,
.name = "Synaptics TM3053-004",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -99,4 +99,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_TOUCHPAD,
.name = "SynPS/2 Synaptics TouchPad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -115,4 +115,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_TOPBUTTONPAD,
.name = "SynPS/2 Synaptics TouchPad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -122,4 +122,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_TRACKPOINT_BUTTONS,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.quirk_file = quirk_file, )
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -113,4 +113,8 @@ TEST_DEVICE(LITEST_SYNAPTICS_CLICKPAD_X220,
.name = "SynPS/2 Synaptics TouchPad",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -79,5 +79,6 @@ TEST_DEVICE(LITEST_TABLET_DOUBLEDIAL_PAD,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -61,5 +61,6 @@ TEST_DEVICE(LITEST_TABLET_MODE_UNRELIABLE,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
})

View file

@ -76,5 +76,6 @@ TEST_DEVICE(LITEST_TABLET_REL_DIAL_PAD,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -82,5 +82,6 @@ TEST_DEVICE(LITEST_THINKPAD_EXTRABUTTONS,
.absinfo = NULL,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -93,4 +93,8 @@ TEST_DEVICE(LITEST_GENERIC_MULTITOUCH_SCREEN,
.name = "generic-mt",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -122,4 +122,8 @@ TEST_DEVICE(LITEST_TOUCHPAD_PALMPRESSURE_ZERO,
.id = &input_id,
.events = events,
.absinfo = absinfo,
.quirk_file = quirk_file, )
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -84,4 +84,8 @@ TEST_DEVICE(LITEST_MULTITOUCH_FUZZ_SCREEN,
.name = "touchscreen with fuzz",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -84,4 +84,8 @@ TEST_DEVICE(LITEST_TOUCHSCREEN_INVALID_RANGE,
.name = "touchscreen-invalid-range",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -87,4 +87,8 @@ TEST_DEVICE(LITEST_TOUCHSCREEN_MT_TOOL_TYPE,
.name = "touchscreen-mt-tool-type",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -52,4 +52,8 @@ TEST_DEVICE(LITEST_TRACKPOINT,
.name = "TPPS/2 IBM TrackPoint",
.id = &input_id,
.absinfo = NULL,
.events = events, )
.events = events,
.udev_properties = {
{ "ID_INTEGRATION", "internal" },
{ NULL },
}, )

View file

@ -106,4 +106,8 @@ TEST_DEVICE(LITEST_UCLOGIC_TABLET,
.name = "uclogic PenTablet Pen",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -113,4 +113,8 @@ TEST_DEVICE(LITEST_VMWARE_VIRTMOUSE,
.name = "VMware VMware Virtual USB Mouse",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -113,4 +113,8 @@ TEST_DEVICE(LITEST_WACOM_BAMBOO_16FG_PEN,
.name = "Wacom Bamboo 16FG 4x5 Pen",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -94,5 +94,6 @@ TEST_DEVICE(LITEST_WACOM_BAMBOO_2FG_FINGER,
{ "LIBINPUT_DEVICE_GROUP", "wacom-bamboo-2fg-group" },
{ "ID_INPUT_TABLET", "1" },
{ "ID_INPUT_TOUCHPAD", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
})

View file

@ -76,5 +76,6 @@ TEST_DEVICE(LITEST_WACOM_BAMBOO_2FG_PAD,
.udev_properties = {
{ .key = "ID_INPUT_TABLET_PAD", .value = "1" },
{ .key = "LIBINPUT_DEVICE_GROUP", .value = "1" },
{ .key = "ID_INTEGRATION", .value = "external" },
{ NULL },
})

View file

@ -116,5 +116,6 @@ TEST_DEVICE(LITEST_WACOM_BAMBOO_2FG_PEN,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-bamboo-2fg-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -138,5 +138,6 @@ TEST_DEVICE(LITEST_WACOM_CALIBRATED_TABLET_PEN,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_CALIBRATION_MATRIX", "-1 0 1 0 -1 1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -150,4 +150,8 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_12WX_PEN,
.name = "Wacom Cintiq 12WX",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -95,5 +95,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_13HDT_FINGER,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-13hdt-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -105,5 +105,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_13HDT_PAD,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-13hdt-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -142,5 +142,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_13HDT_PEN,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-13hdt-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -139,4 +139,8 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_24HD_PEN,
.name = "Wacom Cintiq 24 HD Pen",
.id = &input_id,
.events = events,
.absinfo = absinfo, )
.absinfo = absinfo,
.udev_properties = {
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -131,5 +131,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_24HDT_PAD,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-24hdt-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -94,5 +94,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_PRO16_FINGER,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-pro16-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -75,5 +75,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_PRO16_PAD,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-pro16-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -149,5 +149,6 @@ TEST_DEVICE(LITEST_WACOM_CINTIQ_PRO16_PEN,
.absinfo = absinfo,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-pro16-group" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

View file

@ -114,5 +114,6 @@ TEST_DEVICE(LITEST_WACOM_EKR,
.absinfo = absinfo,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "ID_INTEGRATION", "external" },
{ NULL },
}, )

Some files were not shown because too many files have changed in this diff Show more