From 1c82aa1659b7b4932af60da4e624b58c028effbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Santamar=C3=ADa=20Rogado?= Date: Mon, 9 Mar 2026 09:36:25 +0100 Subject: [PATCH 1/5] quirks: add some more goodix haptic touchpads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: David Santamaría Rogado Part-of: --- quirks/30-vendor-goodix.quirks | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/quirks/30-vendor-goodix.quirks b/quirks/30-vendor-goodix.quirks index b7aab62b..0f849981 100644 --- a/quirks/30-vendor-goodix.quirks +++ b/quirks/30-vendor-goodix.quirks @@ -9,6 +9,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)] From 819e943ab0d366e6a2bc2b16aad0615c078e1428 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Santamar=C3=ADa=20Rogado?= Date: Tue, 17 Feb 2026 17:46:20 +0100 Subject: [PATCH 2/5] evdev: use udev's ID_INTEGRATION MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now we have in udev the ID_INTEGRATION propery that tells us if a device is internal or external, use it while still allow hwdb and quirks to override it. In the future is possible that we could remove quirks for keyboards integration and hwdb for touchpads and joysticks integration. Signed-off-by: David Santamaría Rogado Part-of: --- src/evdev-mt-touchpad.c | 16 +++++++++++++ src/evdev.c | 28 ++++++++++++++++++++++- test/litest-device-generic-usb-touchpad.c | 2 +- test/litest-device-magic-trackpad.c | 2 +- test/litest.h | 3 +-- 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index e60ced9b..dafc0000 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -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) { diff --git a/src/evdev.c b/src/evdev.c index c08d0291..c42c559c 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -489,6 +489,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 +497,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 +540,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 +551,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")) { diff --git a/test/litest-device-generic-usb-touchpad.c b/test/litest-device-generic-usb-touchpad.c index a2cf0bf4..4dfad7d0 100644 --- a/test/litest-device-generic-usb-touchpad.c +++ b/test/litest-device-generic-usb-touchpad.c @@ -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, ) diff --git a/test/litest-device-magic-trackpad.c b/test/litest-device-magic-trackpad.c index 227b20cc..5706c9aa 100644 --- a/test/litest-device-magic-trackpad.c +++ b/test/litest-device-magic-trackpad.c @@ -120,6 +120,6 @@ TEST_DEVICE(LITEST_MAGIC_TRACKPAD, .absinfo = absinfo, .udev_properties = { - { "ID_INPUT_TOUCHPAD_INTEGRATION", "external" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest.h b/test/litest.h index b8b8d798..bac7c399 100644 --- a/test/litest.h +++ b/test/litest.h @@ -1765,8 +1765,7 @@ litest_touchpad_is_external(struct litest_device *dev) return true; udev_device = libinput_device_get_udev_device(dev->libinput_device); - prop = udev_device_get_property_value(udev_device, - "ID_INPUT_TOUCHPAD_INTEGRATION"); + prop = udev_device_get_property_value(udev_device, "ID_INTEGRATION"); is_external = prop && streq(prop, "external"); udev_device_unref(udev_device); From 2ddc734114399116d0252da6d7008ea4c690b875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Santamar=C3=ADa=20Rogado?= Date: Thu, 19 Feb 2026 01:20:34 +0100 Subject: [PATCH 3/5] test: set ID_INTEGRATION into test devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: David Santamaría Rogado Part-of: --- test/litest-device-absinfo-override.c | 1 + test/litest-device-acer-hawaii-keyboard.c | 6 +++++- test/litest-device-acer-hawaii-touchpad.c | 6 +++++- test/litest-device-aiptek-tablet.c | 6 +++++- test/litest-device-alps-3fg.c | 6 +++++- test/litest-device-alps-dualpoint.c | 6 +++++- test/litest-device-alps-semi-mt.c | 6 +++++- test/litest-device-anker-mouse-kbd.c | 6 +++++- test/litest-device-apple-appletouch.c | 6 +++++- test/litest-device-apple-internal-keyboard.c | 6 +++++- test/litest-device-apple-magicmouse.c | 1 + test/litest-device-asus-rog-gladius.c | 6 +++++- test/litest-device-atmel-hover.c | 6 +++++- test/litest-device-bcm5974.c | 6 +++++- test/litest-device-calibrated-touchscreen.c | 1 + test/litest-device-cyborg-rat-5.c | 6 +++++- test/litest-device-dell-canvas-totem-touch.c | 1 + test/litest-device-dell-canvas-totem.c | 1 + test/litest-device-elan-tablet.c | 6 +++++- test/litest-device-elantech-touchpad.c | 6 +++++- test/litest-device-format-string.c | 6 +++++- test/litest-device-generic-pressurepad.c | 6 +++++- test/litest-device-generic-singletouch.c | 6 +++++- test/litest-device-generic-usb-keyboard.c | 6 +++++- test/litest-device-gpio-keys.c | 1 + test/litest-device-hp-wmi-hotkeys.c | 1 + test/litest-device-huion-pentablet.c | 6 +++++- test/litest-device-huion-q620m-dial.c | 1 + test/litest-device-ignored-mouse.c | 1 + test/litest-device-keyboard-all-codes.c | 6 +++++- test/litest-device-keyboard-quirked.c | 4 ++++ test/litest-device-keyboard-razer-blackwidow.c | 6 +++++- ...litest-device-keyboard-razer-blade-stealth-videoswitch.c | 6 +++++- test/litest-device-keyboard-razer-blade-stealth.c | 6 +++++- test/litest-device-keyboard.c | 6 +++++- test/litest-device-keypad-slide-switch.c | 1 + test/litest-device-lenovo-scrollpoint.c | 6 +++++- test/litest-device-lid-switch-surface3.c | 1 + test/litest-device-lid-switch.c | 1 + test/litest-device-logitech-media-keyboard-elite.c | 6 +++++- test/litest-device-logitech-trackball.c | 6 +++++- test/litest-device-mouse-low-dpi.c | 1 + test/litest-device-mouse-ps2.c | 6 +++++- test/litest-device-mouse-roccat.c | 6 +++++- test/litest-device-mouse-virtual.c | 6 +++++- test/litest-device-mouse-wheel-click-angle.c | 1 + test/litest-device-mouse-wheel-click-count.c | 1 + test/litest-device-mouse-wheel-hires-disabled.c | 6 +++++- test/litest-device-mouse-wheel-tilt.c | 1 + test/litest-device-mouse.c | 6 +++++- test/litest-device-ms-nano-transceiver-mouse.c | 6 +++++- test/litest-device-ms-surface-cover.c | 6 +++++- test/litest-device-nexus4-touch-screen.c | 6 +++++- test/litest-device-ploopy-pavonis-stylus.c | 6 +++++- test/litest-device-protocol-a-touch-screen.c | 6 +++++- test/litest-device-qemu-usb-tablet.c | 6 +++++- test/litest-device-sony-vaio-keys.c | 6 +++++- test/litest-device-synaptics-hover.c | 6 +++++- test/litest-device-synaptics-i2c.c | 4 ++++ test/litest-device-synaptics-phantomclicks.c | 4 ++++ test/litest-device-synaptics-pressurepad.c | 6 +++++- test/litest-device-synaptics-rmi4.c | 6 +++++- test/litest-device-synaptics-st.c | 6 +++++- test/litest-device-synaptics-t440.c | 6 +++++- test/litest-device-synaptics-x1-carbon-3rd.c | 6 +++++- test/litest-device-synaptics-x220.c | 6 +++++- test/litest-device-tablet-doubledial.c | 1 + test/litest-device-tablet-mode-switch.c | 1 + test/litest-device-tablet-rel-dial.c | 1 + test/litest-device-thinkpad-extrabuttons.c | 1 + test/litest-device-touch-screen.c | 6 +++++- test/litest-device-touchpad-palm-threshold-zero.c | 6 +++++- test/litest-device-touchscreen-fuzz.c | 6 +++++- test/litest-device-touchscreen-invalid-range.c | 6 +++++- test/litest-device-touchscreen-mt-tool.c | 6 +++++- test/litest-device-trackpoint.c | 6 +++++- test/litest-device-uclogic-tablet.c | 6 +++++- test/litest-device-vmware-virtual-usb-mouse.c | 6 +++++- test/litest-device-wacom-bamboo-16fg-pen.c | 6 +++++- test/litest-device-wacom-bamboo-2fg-finger.c | 1 + test/litest-device-wacom-bamboo-2fg-pad.c | 1 + test/litest-device-wacom-bamboo-2fg-pen.c | 1 + test/litest-device-wacom-calibrated-tablet.c | 1 + test/litest-device-wacom-cintiq-12wx-pen.c | 6 +++++- test/litest-device-wacom-cintiq-13hdt-finger.c | 1 + test/litest-device-wacom-cintiq-13hdt-pad.c | 1 + test/litest-device-wacom-cintiq-13hdt-pen.c | 1 + test/litest-device-wacom-cintiq-24hd-pen.c | 6 +++++- test/litest-device-wacom-cintiq-24hdt-pad.c | 1 + test/litest-device-wacom-cintiq-pro-16-finger.c | 1 + test/litest-device-wacom-cintiq-pro-16-pad.c | 1 + test/litest-device-wacom-cintiq-pro-16-pen.c | 1 + test/litest-device-wacom-ekr.c | 1 + test/litest-device-wacom-hid4800-pen.c | 6 +++++- test/litest-device-wacom-intuos3-pad.c | 1 + test/litest-device-wacom-intuos5-finger.c | 1 + test/litest-device-wacom-intuos5-pad.c | 1 + test/litest-device-wacom-intuos5-pen.c | 1 + test/litest-device-wacom-isdv4-4200-pen.c | 6 +++++- test/litest-device-wacom-isdv4-524c-pen.c | 6 +++++- test/litest-device-wacom-isdv4-e6-finger.c | 6 +++++- test/litest-device-wacom-isdv4-e6-pen.c | 6 +++++- test/litest-device-wacom-mobilestudio-pro-pad.c | 1 + test/litest-device-waltop-tablet.c | 4 ++++ test/litest-device-wheel-only.c | 1 + test/litest-device-xen-virtual-pointer.c | 6 +++++- test/litest-device-yubikey.c | 6 +++++- 107 files changed, 379 insertions(+), 65 deletions(-) diff --git a/test/litest-device-absinfo-override.c b/test/litest-device-absinfo-override.c index a92acc2f..35619e41 100644 --- a/test/litest-device-absinfo-override.c +++ b/test/litest-device-absinfo-override.c @@ -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 }, }, ) diff --git a/test/litest-device-acer-hawaii-keyboard.c b/test/litest-device-acer-hawaii-keyboard.c index 9538b8ed..5608c0de 100644 --- a/test/litest-device-acer-hawaii-keyboard.c +++ b/test/litest-device-acer-hawaii-keyboard.c @@ -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 }, + }, ) diff --git a/test/litest-device-acer-hawaii-touchpad.c b/test/litest-device-acer-hawaii-touchpad.c index 290496b5..9b442619 100644 --- a/test/litest-device-acer-hawaii-touchpad.c +++ b/test/litest-device-acer-hawaii-touchpad.c @@ -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 }, + }, ) diff --git a/test/litest-device-aiptek-tablet.c b/test/litest-device-aiptek-tablet.c index c2650381..62498094 100644 --- a/test/litest-device-aiptek-tablet.c +++ b/test/litest-device-aiptek-tablet.c @@ -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 }, + }, ) diff --git a/test/litest-device-alps-3fg.c b/test/litest-device-alps-3fg.c index f6d2f7c5..d39193d4 100644 --- a/test/litest-device-alps-3fg.c +++ b/test/litest-device-alps-3fg.c @@ -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 }, + }, ) diff --git a/test/litest-device-alps-dualpoint.c b/test/litest-device-alps-dualpoint.c index e48b4fbf..2bdd8de1 100644 --- a/test/litest-device-alps-dualpoint.c +++ b/test/litest-device-alps-dualpoint.c @@ -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 }, + }, ) diff --git a/test/litest-device-alps-semi-mt.c b/test/litest-device-alps-semi-mt.c index bec3aea6..84073494 100644 --- a/test/litest-device-alps-semi-mt.c +++ b/test/litest-device-alps-semi-mt.c @@ -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 }, + }, ) diff --git a/test/litest-device-anker-mouse-kbd.c b/test/litest-device-anker-mouse-kbd.c index 118e59f3..c39c4f57 100644 --- a/test/litest-device-anker-mouse-kbd.c +++ b/test/litest-device-anker-mouse-kbd.c @@ -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 }, + }, ) diff --git a/test/litest-device-apple-appletouch.c b/test/litest-device-apple-appletouch.c index 6d93ef89..893d2503 100644 --- a/test/litest-device-apple-appletouch.c +++ b/test/litest-device-apple-appletouch.c @@ -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 }, + }, ) diff --git a/test/litest-device-apple-internal-keyboard.c b/test/litest-device-apple-internal-keyboard.c index e1ff1bf3..ac86db0a 100644 --- a/test/litest-device-apple-internal-keyboard.c +++ b/test/litest-device-apple-internal-keyboard.c @@ -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 }, + }, ) diff --git a/test/litest-device-apple-magicmouse.c b/test/litest-device-apple-magicmouse.c index b612dfb2..9e06fdc7 100644 --- a/test/litest-device-apple-magicmouse.c +++ b/test/litest-device-apple-magicmouse.c @@ -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 }, }, ) diff --git a/test/litest-device-asus-rog-gladius.c b/test/litest-device-asus-rog-gladius.c index 8a966a91..545d5c34 100644 --- a/test/litest-device-asus-rog-gladius.c +++ b/test/litest-device-asus-rog-gladius.c @@ -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 }, + }, ) diff --git a/test/litest-device-atmel-hover.c b/test/litest-device-atmel-hover.c index c7eff53d..bcffacc0 100644 --- a/test/litest-device-atmel-hover.c +++ b/test/litest-device-atmel-hover.c @@ -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 }, + }, ) diff --git a/test/litest-device-bcm5974.c b/test/litest-device-bcm5974.c index 5b4de97c..ed1a6702 100644 --- a/test/litest-device-bcm5974.c +++ b/test/litest-device-bcm5974.c @@ -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 }, + }, ) diff --git a/test/litest-device-calibrated-touchscreen.c b/test/litest-device-calibrated-touchscreen.c index ae99ec84..eb789c77 100644 --- a/test/litest-device-calibrated-touchscreen.c +++ b/test/litest-device-calibrated-touchscreen.c @@ -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 }, }, ) diff --git a/test/litest-device-cyborg-rat-5.c b/test/litest-device-cyborg-rat-5.c index d1a5b49d..0d12dfd1 100644 --- a/test/litest-device-cyborg-rat-5.c +++ b/test/litest-device-cyborg-rat-5.c @@ -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 }, + }, ) diff --git a/test/litest-device-dell-canvas-totem-touch.c b/test/litest-device-dell-canvas-totem-touch.c index d3fb7096..df48d4fa 100644 --- a/test/litest-device-dell-canvas-totem-touch.c +++ b/test/litest-device-dell-canvas-totem-touch.c @@ -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 }, }, ) diff --git a/test/litest-device-dell-canvas-totem.c b/test/litest-device-dell-canvas-totem.c index 4151d383..99d12cdf 100644 --- a/test/litest-device-dell-canvas-totem.c +++ b/test/litest-device-dell-canvas-totem.c @@ -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 }, }, ) diff --git a/test/litest-device-elan-tablet.c b/test/litest-device-elan-tablet.c index 3ba78498..efa8e2d7 100644 --- a/test/litest-device-elan-tablet.c +++ b/test/litest-device-elan-tablet.c @@ -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 }, + }, ) diff --git a/test/litest-device-elantech-touchpad.c b/test/litest-device-elantech-touchpad.c index 2c727b9c..cf3633ae 100644 --- a/test/litest-device-elantech-touchpad.c +++ b/test/litest-device-elantech-touchpad.c @@ -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 }, + }, ) diff --git a/test/litest-device-format-string.c b/test/litest-device-format-string.c index b096254c..9bcb9cdb 100644 --- a/test/litest-device-format-string.c +++ b/test/litest-device-format-string.c @@ -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 }, + }, ) diff --git a/test/litest-device-generic-pressurepad.c b/test/litest-device-generic-pressurepad.c index 953087e7..1bc76507 100644 --- a/test/litest-device-generic-pressurepad.c +++ b/test/litest-device-generic-pressurepad.c @@ -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 }, + }, ) diff --git a/test/litest-device-generic-singletouch.c b/test/litest-device-generic-singletouch.c index 4185c20b..58eccd90 100644 --- a/test/litest-device-generic-singletouch.c +++ b/test/litest-device-generic-singletouch.c @@ -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 }, + }, ) diff --git a/test/litest-device-generic-usb-keyboard.c b/test/litest-device-generic-usb-keyboard.c index 5a206da6..c440bb2e 100644 --- a/test/litest-device-generic-usb-keyboard.c +++ b/test/litest-device-generic-usb-keyboard.c @@ -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 }, + }, ) diff --git a/test/litest-device-gpio-keys.c b/test/litest-device-gpio-keys.c index be2a3f7c..65b1a7fa 100644 --- a/test/litest-device-gpio-keys.c +++ b/test/litest-device-gpio-keys.c @@ -61,5 +61,6 @@ TEST_DEVICE(LITEST_GPIO_KEYS, .quirk_file = quirk_file, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }) diff --git a/test/litest-device-hp-wmi-hotkeys.c b/test/litest-device-hp-wmi-hotkeys.c index 27a18917..ed3efcc9 100644 --- a/test/litest-device-hp-wmi-hotkeys.c +++ b/test/litest-device-hp-wmi-hotkeys.c @@ -60,5 +60,6 @@ TEST_DEVICE(LITEST_HP_WMI_HOTKEYS, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }) diff --git a/test/litest-device-huion-pentablet.c b/test/litest-device-huion-pentablet.c index 91455d6f..63de14a5 100644 --- a/test/litest-device-huion-pentablet.c +++ b/test/litest-device-huion-pentablet.c @@ -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 }, + }, ) diff --git a/test/litest-device-huion-q620m-dial.c b/test/litest-device-huion-q620m-dial.c index 7998282c..8300910f 100644 --- a/test/litest-device-huion-q620m-dial.c +++ b/test/litest-device-huion-q620m-dial.c @@ -78,5 +78,6 @@ TEST_DEVICE(LITEST_HUION_Q620M_DIAL, .absinfo = absinfo, .udev_properties = { { "ID_INPUT_TABLET_PAD", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-ignored-mouse.c b/test/litest-device-ignored-mouse.c index 08b9b81e..653ab57e 100644 --- a/test/litest-device-ignored-mouse.c +++ b/test/litest-device-ignored-mouse.c @@ -54,5 +54,6 @@ TEST_DEVICE(LITEST_IGNORED_MOUSE, .events = events, .udev_properties = { { "LIBINPUT_IGNORE_DEVICE", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-keyboard-all-codes.c b/test/litest-device-keyboard-all-codes.c index 6021991d..f9e6bd36 100644 --- a/test/litest-device-keyboard-all-codes.c +++ b/test/litest-device-keyboard-all-codes.c @@ -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) diff --git a/test/litest-device-keyboard-quirked.c b/test/litest-device-keyboard-quirked.c index 01e678d2..5d8d689e 100644 --- a/test/litest-device-keyboard-quirked.c +++ b/test/litest-device-keyboard-quirked.c @@ -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, ) diff --git a/test/litest-device-keyboard-razer-blackwidow.c b/test/litest-device-keyboard-razer-blackwidow.c index 3d844398..9fc81667 100644 --- a/test/litest-device-keyboard-razer-blackwidow.c +++ b/test/litest-device-keyboard-razer-blackwidow.c @@ -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 }, + }, ) diff --git a/test/litest-device-keyboard-razer-blade-stealth-videoswitch.c b/test/litest-device-keyboard-razer-blade-stealth-videoswitch.c index beb3a0dc..eee77f89 100644 --- a/test/litest-device-keyboard-razer-blade-stealth-videoswitch.c +++ b/test/litest-device-keyboard-razer-blade-stealth-videoswitch.c @@ -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 }, + }, ) diff --git a/test/litest-device-keyboard-razer-blade-stealth.c b/test/litest-device-keyboard-razer-blade-stealth.c index c79afbed..7edbe304 100644 --- a/test/litest-device-keyboard-razer-blade-stealth.c +++ b/test/litest-device-keyboard-razer-blade-stealth.c @@ -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 }, + }, ) diff --git a/test/litest-device-keyboard.c b/test/litest-device-keyboard.c index 39103f18..9c285137 100644 --- a/test/litest-device-keyboard.c +++ b/test/litest-device-keyboard.c @@ -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 }, + }, ) diff --git a/test/litest-device-keypad-slide-switch.c b/test/litest-device-keypad-slide-switch.c index 1b48965f..fbe8288b 100644 --- a/test/litest-device-keypad-slide-switch.c +++ b/test/litest-device-keypad-slide-switch.c @@ -52,5 +52,6 @@ TEST_DEVICE(LITEST_KEYPAD_SLIDE_SWITCH, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }, ) diff --git a/test/litest-device-lenovo-scrollpoint.c b/test/litest-device-lenovo-scrollpoint.c index 351d1eef..704ee00d 100644 --- a/test/litest-device-lenovo-scrollpoint.c +++ b/test/litest-device-lenovo-scrollpoint.c @@ -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 }, + }, ) diff --git a/test/litest-device-lid-switch-surface3.c b/test/litest-device-lid-switch-surface3.c index 90cd9ae7..1c2c88fd 100644 --- a/test/litest-device-lid-switch-surface3.c +++ b/test/litest-device-lid-switch-surface3.c @@ -57,5 +57,6 @@ TEST_DEVICE(LITEST_LID_SWITCH_SURFACE3, .quirk_file = quirk_file, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }, ) diff --git a/test/litest-device-lid-switch.c b/test/litest-device-lid-switch.c index 4ff20b31..f6494746 100644 --- a/test/litest-device-lid-switch.c +++ b/test/litest-device-lid-switch.c @@ -56,5 +56,6 @@ TEST_DEVICE(LITEST_LID_SWITCH, .quirk_file = quirk_file, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }, ) diff --git a/test/litest-device-logitech-media-keyboard-elite.c b/test/litest-device-logitech-media-keyboard-elite.c index 784f0d44..1e4f6ec1 100644 --- a/test/litest-device-logitech-media-keyboard-elite.c +++ b/test/litest-device-logitech-media-keyboard-elite.c @@ -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 }, + }, ) diff --git a/test/litest-device-logitech-trackball.c b/test/litest-device-logitech-trackball.c index 9b47be64..4952a659 100644 --- a/test/litest-device-logitech-trackball.c +++ b/test/litest-device-logitech-trackball.c @@ -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 }, + }, ) diff --git a/test/litest-device-mouse-low-dpi.c b/test/litest-device-mouse-low-dpi.c index 8ecf8266..c6be286b 100644 --- a/test/litest-device-mouse-low-dpi.c +++ b/test/litest-device-mouse-low-dpi.c @@ -57,5 +57,6 @@ TEST_DEVICE(LITEST_MOUSE_LOW_DPI, .events = events, .udev_properties = { { "MOUSE_DPI", "400@125" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-mouse-ps2.c b/test/litest-device-mouse-ps2.c index 2ce4df3e..35388d85 100644 --- a/test/litest-device-mouse-ps2.c +++ b/test/litest-device-mouse-ps2.c @@ -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 }, + }, ) diff --git a/test/litest-device-mouse-roccat.c b/test/litest-device-mouse-roccat.c index 31f92af6..01d90aea 100644 --- a/test/litest-device-mouse-roccat.c +++ b/test/litest-device-mouse-roccat.c @@ -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 }, + }, ) diff --git a/test/litest-device-mouse-virtual.c b/test/litest-device-mouse-virtual.c index c3ed94f7..2b5c2316 100644 --- a/test/litest-device-mouse-virtual.c +++ b/test/litest-device-mouse-virtual.c @@ -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 }, + }, ) diff --git a/test/litest-device-mouse-wheel-click-angle.c b/test/litest-device-mouse-wheel-click-angle.c index aaf497a8..772f2499 100644 --- a/test/litest-device-mouse-wheel-click-angle.c +++ b/test/litest-device-mouse-wheel-click-angle.c @@ -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 }, }) diff --git a/test/litest-device-mouse-wheel-click-count.c b/test/litest-device-mouse-wheel-click-count.c index 02dd9eff..14f664f8 100644 --- a/test/litest-device-mouse-wheel-click-count.c +++ b/test/litest-device-mouse-wheel-click-count.c @@ -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 }, }) diff --git a/test/litest-device-mouse-wheel-hires-disabled.c b/test/litest-device-mouse-wheel-hires-disabled.c index e41d90c2..83a387c4 100644 --- a/test/litest-device-mouse-wheel-hires-disabled.c +++ b/test/litest-device-mouse-wheel-hires-disabled.c @@ -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 }, + }, ) diff --git a/test/litest-device-mouse-wheel-tilt.c b/test/litest-device-mouse-wheel-tilt.c index 62d7d132..195b372e 100644 --- a/test/litest-device-mouse-wheel-tilt.c +++ b/test/litest-device-mouse-wheel-tilt.c @@ -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 }, }) diff --git a/test/litest-device-mouse.c b/test/litest-device-mouse.c index 6d709f40..95c10dbd 100644 --- a/test/litest-device-mouse.c +++ b/test/litest-device-mouse.c @@ -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 }, + }, ) diff --git a/test/litest-device-ms-nano-transceiver-mouse.c b/test/litest-device-ms-nano-transceiver-mouse.c index 8fb55ff8..3019e598 100644 --- a/test/litest-device-ms-nano-transceiver-mouse.c +++ b/test/litest-device-ms-nano-transceiver-mouse.c @@ -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 }, + }, ) diff --git a/test/litest-device-ms-surface-cover.c b/test/litest-device-ms-surface-cover.c index 6521fc50..c55b5d6d 100644 --- a/test/litest-device-ms-surface-cover.c +++ b/test/litest-device-ms-surface-cover.c @@ -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 }, + }, ) diff --git a/test/litest-device-nexus4-touch-screen.c b/test/litest-device-nexus4-touch-screen.c index 9b0083f7..21f9572c 100644 --- a/test/litest-device-nexus4-touch-screen.c +++ b/test/litest-device-nexus4-touch-screen.c @@ -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 }, + }, ) diff --git a/test/litest-device-ploopy-pavonis-stylus.c b/test/litest-device-ploopy-pavonis-stylus.c index f3afd12f..f0b0713e 100644 --- a/test/litest-device-ploopy-pavonis-stylus.c +++ b/test/litest-device-ploopy-pavonis-stylus.c @@ -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 }, + }, ) diff --git a/test/litest-device-protocol-a-touch-screen.c b/test/litest-device-protocol-a-touch-screen.c index 3ead5012..78d16c30 100644 --- a/test/litest-device-protocol-a-touch-screen.c +++ b/test/litest-device-protocol-a-touch-screen.c @@ -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 }, + }, ) diff --git a/test/litest-device-qemu-usb-tablet.c b/test/litest-device-qemu-usb-tablet.c index 58465ba0..1cc23f4d 100644 --- a/test/litest-device-qemu-usb-tablet.c +++ b/test/litest-device-qemu-usb-tablet.c @@ -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 }, + }, ) diff --git a/test/litest-device-sony-vaio-keys.c b/test/litest-device-sony-vaio-keys.c index 1a2dfa69..0a6384ca 100644 --- a/test/litest-device-sony-vaio-keys.c +++ b/test/litest-device-sony-vaio-keys.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-hover.c b/test/litest-device-synaptics-hover.c index 40d66e33..659b7932 100644 --- a/test/litest-device-synaptics-hover.c +++ b/test/litest-device-synaptics-hover.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-i2c.c b/test/litest-device-synaptics-i2c.c index 1fbe04d2..df7ebfd9 100644 --- a/test/litest-device-synaptics-i2c.c +++ b/test/litest-device-synaptics-i2c.c @@ -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, ) diff --git a/test/litest-device-synaptics-phantomclicks.c b/test/litest-device-synaptics-phantomclicks.c index e8e07b46..16508af0 100644 --- a/test/litest-device-synaptics-phantomclicks.c +++ b/test/litest-device-synaptics-phantomclicks.c @@ -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, ) diff --git a/test/litest-device-synaptics-pressurepad.c b/test/litest-device-synaptics-pressurepad.c index adeddf43..38f602c1 100644 --- a/test/litest-device-synaptics-pressurepad.c +++ b/test/litest-device-synaptics-pressurepad.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-rmi4.c b/test/litest-device-synaptics-rmi4.c index 3c8694e7..a49099f3 100644 --- a/test/litest-device-synaptics-rmi4.c +++ b/test/litest-device-synaptics-rmi4.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-st.c b/test/litest-device-synaptics-st.c index 6fef36e1..cd6d54e5 100644 --- a/test/litest-device-synaptics-st.c +++ b/test/litest-device-synaptics-st.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-t440.c b/test/litest-device-synaptics-t440.c index 72c247b8..a51b62fb 100644 --- a/test/litest-device-synaptics-t440.c +++ b/test/litest-device-synaptics-t440.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-x1-carbon-3rd.c b/test/litest-device-synaptics-x1-carbon-3rd.c index 58bf21f9..04c48056 100644 --- a/test/litest-device-synaptics-x1-carbon-3rd.c +++ b/test/litest-device-synaptics-x1-carbon-3rd.c @@ -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 }, + }, ) diff --git a/test/litest-device-synaptics-x220.c b/test/litest-device-synaptics-x220.c index e12f9d58..6b43a697 100644 --- a/test/litest-device-synaptics-x220.c +++ b/test/litest-device-synaptics-x220.c @@ -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 }, + }, ) diff --git a/test/litest-device-tablet-doubledial.c b/test/litest-device-tablet-doubledial.c index 674e1a9a..836848ef 100644 --- a/test/litest-device-tablet-doubledial.c +++ b/test/litest-device-tablet-doubledial.c @@ -79,5 +79,6 @@ TEST_DEVICE(LITEST_TABLET_DOUBLEDIAL_PAD, .absinfo = absinfo, .udev_properties = { { "ID_INPUT_TABLET_PAD", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-tablet-mode-switch.c b/test/litest-device-tablet-mode-switch.c index 47d5d637..4a78364e 100644 --- a/test/litest-device-tablet-mode-switch.c +++ b/test/litest-device-tablet-mode-switch.c @@ -61,5 +61,6 @@ TEST_DEVICE(LITEST_TABLET_MODE_UNRELIABLE, .quirk_file = quirk_file, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }) diff --git a/test/litest-device-tablet-rel-dial.c b/test/litest-device-tablet-rel-dial.c index b1df8e64..9d8634aa 100644 --- a/test/litest-device-tablet-rel-dial.c +++ b/test/litest-device-tablet-rel-dial.c @@ -76,5 +76,6 @@ TEST_DEVICE(LITEST_TABLET_REL_DIAL_PAD, .absinfo = absinfo, .udev_properties = { { "ID_INPUT_TABLET_PAD", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-thinkpad-extrabuttons.c b/test/litest-device-thinkpad-extrabuttons.c index 6d1e050f..05186a7c 100644 --- a/test/litest-device-thinkpad-extrabuttons.c +++ b/test/litest-device-thinkpad-extrabuttons.c @@ -82,5 +82,6 @@ TEST_DEVICE(LITEST_THINKPAD_EXTRABUTTONS, .absinfo = NULL, .udev_properties = { { "ID_INPUT_SWITCH", "1" }, + { "ID_INTEGRATION", "internal" }, { NULL }, }, ) diff --git a/test/litest-device-touch-screen.c b/test/litest-device-touch-screen.c index c5325241..ddceb1cb 100644 --- a/test/litest-device-touch-screen.c +++ b/test/litest-device-touch-screen.c @@ -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 }, + }, ) diff --git a/test/litest-device-touchpad-palm-threshold-zero.c b/test/litest-device-touchpad-palm-threshold-zero.c index b4a7ddd1..1763588f 100644 --- a/test/litest-device-touchpad-palm-threshold-zero.c +++ b/test/litest-device-touchpad-palm-threshold-zero.c @@ -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 }, + }, ) diff --git a/test/litest-device-touchscreen-fuzz.c b/test/litest-device-touchscreen-fuzz.c index f28ed576..e529d6f7 100644 --- a/test/litest-device-touchscreen-fuzz.c +++ b/test/litest-device-touchscreen-fuzz.c @@ -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 }, + }, ) diff --git a/test/litest-device-touchscreen-invalid-range.c b/test/litest-device-touchscreen-invalid-range.c index 502c93a7..9e682844 100644 --- a/test/litest-device-touchscreen-invalid-range.c +++ b/test/litest-device-touchscreen-invalid-range.c @@ -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 }, + }, ) diff --git a/test/litest-device-touchscreen-mt-tool.c b/test/litest-device-touchscreen-mt-tool.c index e0c83e37..f12ba364 100644 --- a/test/litest-device-touchscreen-mt-tool.c +++ b/test/litest-device-touchscreen-mt-tool.c @@ -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 }, + }, ) diff --git a/test/litest-device-trackpoint.c b/test/litest-device-trackpoint.c index b6061ec3..0ab2f3d6 100644 --- a/test/litest-device-trackpoint.c +++ b/test/litest-device-trackpoint.c @@ -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 }, + }, ) diff --git a/test/litest-device-uclogic-tablet.c b/test/litest-device-uclogic-tablet.c index 37c77c65..0b99c465 100644 --- a/test/litest-device-uclogic-tablet.c +++ b/test/litest-device-uclogic-tablet.c @@ -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 }, + }, ) diff --git a/test/litest-device-vmware-virtual-usb-mouse.c b/test/litest-device-vmware-virtual-usb-mouse.c index 374a24c8..0de3b629 100644 --- a/test/litest-device-vmware-virtual-usb-mouse.c +++ b/test/litest-device-vmware-virtual-usb-mouse.c @@ -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 }, + }, ) diff --git a/test/litest-device-wacom-bamboo-16fg-pen.c b/test/litest-device-wacom-bamboo-16fg-pen.c index a45f0432..d88ce6f9 100644 --- a/test/litest-device-wacom-bamboo-16fg-pen.c +++ b/test/litest-device-wacom-bamboo-16fg-pen.c @@ -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 }, + }, ) diff --git a/test/litest-device-wacom-bamboo-2fg-finger.c b/test/litest-device-wacom-bamboo-2fg-finger.c index 3123aee7..e45d9cb1 100644 --- a/test/litest-device-wacom-bamboo-2fg-finger.c +++ b/test/litest-device-wacom-bamboo-2fg-finger.c @@ -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 }, }) diff --git a/test/litest-device-wacom-bamboo-2fg-pad.c b/test/litest-device-wacom-bamboo-2fg-pad.c index f315a811..381610f4 100644 --- a/test/litest-device-wacom-bamboo-2fg-pad.c +++ b/test/litest-device-wacom-bamboo-2fg-pad.c @@ -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 }, }) diff --git a/test/litest-device-wacom-bamboo-2fg-pen.c b/test/litest-device-wacom-bamboo-2fg-pen.c index 88a95532..4b0f2e0a 100644 --- a/test/litest-device-wacom-bamboo-2fg-pen.c +++ b/test/litest-device-wacom-bamboo-2fg-pen.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-calibrated-tablet.c b/test/litest-device-wacom-calibrated-tablet.c index 1978fb67..158db1f0 100644 --- a/test/litest-device-wacom-calibrated-tablet.c +++ b/test/litest-device-wacom-calibrated-tablet.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-12wx-pen.c b/test/litest-device-wacom-cintiq-12wx-pen.c index 83aae9cc..fdbe3864 100644 --- a/test/litest-device-wacom-cintiq-12wx-pen.c +++ b/test/litest-device-wacom-cintiq-12wx-pen.c @@ -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 }, + }, ) diff --git a/test/litest-device-wacom-cintiq-13hdt-finger.c b/test/litest-device-wacom-cintiq-13hdt-finger.c index d0ba38b5..ed502004 100644 --- a/test/litest-device-wacom-cintiq-13hdt-finger.c +++ b/test/litest-device-wacom-cintiq-13hdt-finger.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-13hdt-pad.c b/test/litest-device-wacom-cintiq-13hdt-pad.c index 45eec677..29818a1e 100644 --- a/test/litest-device-wacom-cintiq-13hdt-pad.c +++ b/test/litest-device-wacom-cintiq-13hdt-pad.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-13hdt-pen.c b/test/litest-device-wacom-cintiq-13hdt-pen.c index 6385fa7c..a5c9b15a 100644 --- a/test/litest-device-wacom-cintiq-13hdt-pen.c +++ b/test/litest-device-wacom-cintiq-13hdt-pen.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-24hd-pen.c b/test/litest-device-wacom-cintiq-24hd-pen.c index 84c52081..f54879a3 100644 --- a/test/litest-device-wacom-cintiq-24hd-pen.c +++ b/test/litest-device-wacom-cintiq-24hd-pen.c @@ -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 }, + }, ) diff --git a/test/litest-device-wacom-cintiq-24hdt-pad.c b/test/litest-device-wacom-cintiq-24hdt-pad.c index cac4b7e3..7bf346f2 100644 --- a/test/litest-device-wacom-cintiq-24hdt-pad.c +++ b/test/litest-device-wacom-cintiq-24hdt-pad.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-pro-16-finger.c b/test/litest-device-wacom-cintiq-pro-16-finger.c index 7ba9770d..1c6bf20d 100644 --- a/test/litest-device-wacom-cintiq-pro-16-finger.c +++ b/test/litest-device-wacom-cintiq-pro-16-finger.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-pro-16-pad.c b/test/litest-device-wacom-cintiq-pro-16-pad.c index 735c19f6..48b8f8f3 100644 --- a/test/litest-device-wacom-cintiq-pro-16-pad.c +++ b/test/litest-device-wacom-cintiq-pro-16-pad.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-cintiq-pro-16-pen.c b/test/litest-device-wacom-cintiq-pro-16-pen.c index b0bbb181..13b5f121 100644 --- a/test/litest-device-wacom-cintiq-pro-16-pen.c +++ b/test/litest-device-wacom-cintiq-pro-16-pen.c @@ -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 }, }, ) diff --git a/test/litest-device-wacom-ekr.c b/test/litest-device-wacom-ekr.c index 0699ee01..5b61257f 100644 --- a/test/litest-device-wacom-ekr.c +++ b/test/litest-device-wacom-ekr.c @@ -114,5 +114,6 @@ TEST_DEVICE(LITEST_WACOM_EKR, .absinfo = absinfo, .udev_properties = { { "ID_INPUT_TABLET_PAD", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-wacom-hid4800-pen.c b/test/litest-device-wacom-hid4800-pen.c index 01cb9ee1..c729dcf4 100644 --- a/test/litest-device-wacom-hid4800-pen.c +++ b/test/litest-device-wacom-hid4800-pen.c @@ -110,4 +110,8 @@ TEST_DEVICE(LITEST_WACOM_HID4800_PEN, .name = "Wacom HID 4800 Pen", .id = &input_id, .events = events, - .absinfo = absinfo, ) + .absinfo = absinfo, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, ) diff --git a/test/litest-device-wacom-intuos3-pad.c b/test/litest-device-wacom-intuos3-pad.c index 61066c7a..4c24ed16 100644 --- a/test/litest-device-wacom-intuos3-pad.c +++ b/test/litest-device-wacom-intuos3-pad.c @@ -99,5 +99,6 @@ TEST_DEVICE(LITEST_WACOM_INTUOS3_PAD, .absinfo = absinfo, .udev_properties = { { "ID_INPUT_TABLET_PAD", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-wacom-intuos5-finger.c b/test/litest-device-wacom-intuos5-finger.c index 8f165e3b..1cf9de4f 100644 --- a/test/litest-device-wacom-intuos5-finger.c +++ b/test/litest-device-wacom-intuos5-finger.c @@ -119,5 +119,6 @@ TEST_DEVICE(LITEST_WACOM_INTUOS5_FINGER, { "ID_INPUT_TABLET", "1" }, { "ID_INPUT_TOUCHPAD", "1" }, { "LIBINPUT_DEVICE_GROUP", "wacom-i5-group" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-wacom-intuos5-pad.c b/test/litest-device-wacom-intuos5-pad.c index 18f5b8fe..d621f566 100644 --- a/test/litest-device-wacom-intuos5-pad.c +++ b/test/litest-device-wacom-intuos5-pad.c @@ -105,5 +105,6 @@ TEST_DEVICE(LITEST_WACOM_INTUOS5_PAD, .udev_properties = { { "ID_INPUT_TABLET_PAD", "1" }, { "LIBINPUT_DEVICE_GROUP", "wacom-i5-group" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-wacom-intuos5-pen.c b/test/litest-device-wacom-intuos5-pen.c index 0631c9f2..07bd1ab2 100644 --- a/test/litest-device-wacom-intuos5-pen.c +++ b/test/litest-device-wacom-intuos5-pen.c @@ -158,5 +158,6 @@ TEST_DEVICE(LITEST_WACOM_INTUOS5_PEN, .absinfo = absinfo, .udev_properties = { { "LIBINPUT_DEVICE_GROUP", "wacom-i5-group" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-wacom-isdv4-4200-pen.c b/test/litest-device-wacom-isdv4-4200-pen.c index 73a56341..39125102 100644 --- a/test/litest-device-wacom-isdv4-4200-pen.c +++ b/test/litest-device-wacom-isdv4-4200-pen.c @@ -110,4 +110,8 @@ TEST_DEVICE(LITEST_WACOM_ISDV4_4200_PEN, .name = "Wacom ISD-V4 Pen", .id = &input_id, .events = events, - .absinfo = absinfo, ) + .absinfo = absinfo, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, ) diff --git a/test/litest-device-wacom-isdv4-524c-pen.c b/test/litest-device-wacom-isdv4-524c-pen.c index 36336158..9c42f45f 100644 --- a/test/litest-device-wacom-isdv4-524c-pen.c +++ b/test/litest-device-wacom-isdv4-524c-pen.c @@ -164,4 +164,8 @@ TEST_DEVICE(LITEST_WACOM_ISDV4_524C_PEN, .id = &input_id, .events = events, .absinfo = absinfo, - .create = create, ) + .create = create, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, ) diff --git a/test/litest-device-wacom-isdv4-e6-finger.c b/test/litest-device-wacom-isdv4-e6-finger.c index a7065571..c96e5c28 100644 --- a/test/litest-device-wacom-isdv4-e6-finger.c +++ b/test/litest-device-wacom-isdv4-e6-finger.c @@ -87,4 +87,8 @@ TEST_DEVICE(LITEST_WACOM_ISDV4_E6_FINGER, .name = "Wacom ISDv4 E6 Finger", .id = &input_id, .events = events, - .absinfo = absinfo, ) + .absinfo = absinfo, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, ) diff --git a/test/litest-device-wacom-isdv4-e6-pen.c b/test/litest-device-wacom-isdv4-e6-pen.c index 53b9a409..fa657bb3 100644 --- a/test/litest-device-wacom-isdv4-e6-pen.c +++ b/test/litest-device-wacom-isdv4-e6-pen.c @@ -103,4 +103,8 @@ TEST_DEVICE(LITEST_WACOM_ISDV4_E6_PEN, .name = "Wacom ISDv4 E6 Pen", .id = &input_id, .events = events, - .absinfo = absinfo, ) + .absinfo = absinfo, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, ) diff --git a/test/litest-device-wacom-mobilestudio-pro-pad.c b/test/litest-device-wacom-mobilestudio-pro-pad.c index 2b6807b4..aa50bf0f 100644 --- a/test/litest-device-wacom-mobilestudio-pro-pad.c +++ b/test/litest-device-wacom-mobilestudio-pro-pad.c @@ -111,5 +111,6 @@ TEST_DEVICE(LITEST_WACOM_MOBILESTUDIO_PRO_16_PAD, .udev_properties = { { "ID_INPUT_TABLET", "1" }, { "ID_INPUT_TABLET_PAD", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-waltop-tablet.c b/test/litest-device-waltop-tablet.c index 3065d9f9..efac7dc6 100644 --- a/test/litest-device-waltop-tablet.c +++ b/test/litest-device-waltop-tablet.c @@ -237,4 +237,8 @@ TEST_DEVICE(LITEST_WALTOP, .id = &input_id, .events = events, .absinfo = absinfo, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, .quirk_file = quirk_file, ) diff --git a/test/litest-device-wheel-only.c b/test/litest-device-wheel-only.c index 2bec1545..ed13555c 100644 --- a/test/litest-device-wheel-only.c +++ b/test/litest-device-wheel-only.c @@ -49,5 +49,6 @@ TEST_DEVICE(LITEST_WHEEL_ONLY, .events = events, .udev_properties = { { "ID_INPUT_KEY", "1" }, + { "ID_INTEGRATION", "external" }, { NULL }, }, ) diff --git a/test/litest-device-xen-virtual-pointer.c b/test/litest-device-xen-virtual-pointer.c index dcf8ce43..66fa390b 100644 --- a/test/litest-device-xen-virtual-pointer.c +++ b/test/litest-device-xen-virtual-pointer.c @@ -103,4 +103,8 @@ TEST_DEVICE(LITEST_XEN_VIRTUAL_POINTER, .name = "Xen Virtual Pointer", .id = &input_id, .events = events, - .absinfo = absinfo, ) + .absinfo = absinfo, + .udev_properties = { + { "ID_INTEGRATION", "internal" }, + { NULL }, + }, ) diff --git a/test/litest-device-yubikey.c b/test/litest-device-yubikey.c index 97ee1ec0..b81b36f2 100644 --- a/test/litest-device-yubikey.c +++ b/test/litest-device-yubikey.c @@ -156,4 +156,8 @@ TEST_DEVICE(LITEST_YUBIKEY, .name = "Yubico Yubico Yubikey II", .id = &input_id, .events = events, - .absinfo = NULL, ) + .absinfo = NULL, + .udev_properties = { + { "ID_INTEGRATION", "external" }, + { NULL }, + }, ) From 43547b461bea7a5bfe0658ee1689bea03dca6fa7 Mon Sep 17 00:00:00 2001 From: Mingcong Bai Date: Tue, 10 Mar 2026 11:37:14 +0800 Subject: [PATCH 4/5] quirks: add Goodix pressure pad quirk for 27C6:01E7 This touchpad is found on the newly released Lenovo ThinkBook G8+ IPH. Signed-off-by: Mingcong Bai Part-of: --- quirks/30-vendor-goodix.quirks | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/quirks/30-vendor-goodix.quirks b/quirks/30-vendor-goodix.quirks index 0f849981..94c3637b 100644 --- a/quirks/30-vendor-goodix.quirks +++ b/quirks/30-vendor-goodix.quirks @@ -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 From 8dd25ece1073653c95ed26450be2739d3e0e30fd Mon Sep 17 00:00:00 2001 From: Ilya Kamenko Date: Mon, 2 Mar 2026 18:49:53 +0100 Subject: [PATCH 5/5] Fold hold-to-scroll into existing scroll button lock mode Instead of adding a new ENABLED_HOLD enum value, modify the existing ENABLED lock mode so that hold+scroll+release doesn't engage the lock. Add a 500ms grace period: if the button was held and used to scroll for longer than 500ms, releasing the button does not engage the lock (temporary scroll). If released within 500ms (e.g. shaky hands triggering accidental motion), the lock still engages as before. This fixes the unintuitive behavior where the lock engages even after actively scrolling, without requiring new API surface. Closes: https://gitlab.freedesktop.org/libinput/libinput/-/issues/1259 Co-Authored-By: Claude Opus 4.6 Part-of: --- doc/user/scrolling.rst | 6 ++ src/evdev.c | 10 +++ src/libinput.h | 4 +- test/litest.h | 1 + test/test-pointer.c | 144 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 164 insertions(+), 1 deletion(-) diff --git a/doc/user/scrolling.rst b/doc/user/scrolling.rst index 2adec76f..ddc47b4a 100644 --- a/doc/user/scrolling.rst +++ b/doc/user/scrolling.rst @@ -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: ------------------------------------------------------------------------------ diff --git a/src/evdev.c b/src/evdev.c index c42c559c..6c5ec1e5 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -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 */ diff --git a/src/libinput.h b/src/libinput.h index 70a87e1b..481cbd69 100644 --- a/src/libinput.h +++ b/src/libinput.h @@ -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 diff --git a/test/litest.h b/test/litest.h index bac7c399..d2d00a8e 100644 --- a/test/litest.h +++ b/test/litest.h @@ -1359,6 +1359,7 @@ _litest_timeout(struct libinput *li, const char *func, int lineno, int millis); #define litest_timeout_debounce(li_) litest_timeout(li_, 30) #define litest_timeout_softbuttons(li_) litest_timeout(li_, 300) #define litest_timeout_buttonscroll(li_) litest_timeout(li_, 300) +#define litest_timeout_scroll_button_lock_grace(li_) litest_timeout(li_, 600) #define litest_timeout_wheel_scroll(li_) litest_timeout(li_, 600) #define litest_timeout_edgescroll(li_) litest_timeout(li_, 300) #define litest_timeout_finger_switch(li_) litest_timeout(li_, 140) diff --git a/test/test-pointer.c b/test/test-pointer.c index e0bef987..56540551 100644 --- a/test/test-pointer.c +++ b/test/test-pointer.c @@ -2238,6 +2238,146 @@ START_TEST(pointer_scroll_button_lock_doubleclick_nomove) } END_TEST +START_TEST(pointer_scroll_button_lock_scroll_releases) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + litest_enable_scroll_button_lock(dev, BTN_LEFT); + litest_disable_middleemu(dev); + litest_drain_events(li); + + /* Press, wait for buttonscroll timeout, scroll, wait past grace + period, release. The lock should NOT engage. */ + litest_button_click_debounced(dev, li, BTN_LEFT, true); + litest_timeout_buttonscroll(li); + litest_dispatch(li); + + for (int i = 0; i < 10; i++) { + litest_event(dev, EV_REL, REL_X, 1); + litest_event(dev, EV_REL, REL_Y, 6); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + } + litest_dispatch(li); + litest_assert_only_axis_events(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS); + + litest_timeout_scroll_button_lock_grace(li); + + litest_button_click_debounced(dev, li, BTN_LEFT, false); + litest_dispatch(li); + + /* Expect scroll stop, no lock */ + litest_assert_scroll(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS, 0, 0); + + /* Subsequent motion should be pointer motion, not scroll */ + for (int i = 0; i < 10; i++) { + litest_event(dev, EV_REL, REL_X, 1); + litest_event(dev, EV_REL, REL_Y, 6); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + } + litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION); +} +END_TEST + +START_TEST(pointer_scroll_button_lock_scroll_within_grace) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + litest_enable_scroll_button_lock(dev, BTN_LEFT); + litest_disable_middleemu(dev); + litest_drain_events(li); + + /* Press, wait for buttonscroll timeout, scroll briefly, release + immediately (total < 500ms from press). The lock SHOULD engage + since we're within the grace period. */ + litest_button_click_debounced(dev, li, BTN_LEFT, true); + litest_timeout_buttonscroll(li); + litest_dispatch(li); + + for (int i = 0; i < 3; i++) { + litest_event(dev, EV_REL, REL_X, 1); + litest_event(dev, EV_REL, REL_Y, 6); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + } + litest_dispatch(li); + + /* Release immediately (still within grace period) */ + litest_button_click_debounced(dev, li, BTN_LEFT, false); + litest_dispatch(li); + + /* Lock should be engaged: drain scroll events from the hold */ + litest_assert_only_axis_events(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS); + + /* Motion while locked should produce scroll events */ + for (int i = 0; i < 10; i++) { + litest_event(dev, EV_REL, REL_X, 1); + litest_event(dev, EV_REL, REL_Y, 6); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + } + litest_dispatch(li); + litest_assert_only_axis_events(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS); + + /* Click again to unlock */ + litest_button_click_debounced(dev, li, BTN_LEFT, true); + litest_button_click_debounced(dev, li, BTN_LEFT, false); + litest_dispatch(li); + + litest_assert_scroll(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS, 0, 0); + + /* Back to normal motion */ + for (int i = 0; i < 10; i++) { + litest_event(dev, EV_REL, REL_X, 1); + litest_event(dev, EV_REL, REL_Y, 6); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + } + litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION); +} +END_TEST + +START_TEST(pointer_scroll_button_lock_hold_no_move_still_locks) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + litest_enable_scroll_button_lock(dev, BTN_LEFT); + litest_disable_middleemu(dev); + litest_drain_events(li); + + /* Press, wait past 500ms, release without moving. + button_scroll_state == READY (not SCROLLING), so lock + engages as normal click. */ + litest_button_click_debounced(dev, li, BTN_LEFT, true); + litest_timeout_buttonscroll(li); + litest_timeout_scroll_button_lock_grace(li); + litest_dispatch(li); + + litest_button_click_debounced(dev, li, BTN_LEFT, false); + litest_dispatch(li); + + /* Lock should be engaged (release was filtered). + The scroll SM was in READY state, so it emits button press/release + (since no scrolling occurred), but the lock SM filtered the release. + Subsequent motion should produce scroll events. */ + litest_assert_empty_queue(li); + + for (int i = 0; i < 10; i++) { + litest_event(dev, EV_REL, REL_X, 1); + litest_event(dev, EV_REL, REL_Y, 6); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + } + litest_dispatch(li); + litest_assert_only_axis_events(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS); + + /* Click to unlock */ + litest_button_click_debounced(dev, li, BTN_LEFT, true); + litest_button_click_debounced(dev, li, BTN_LEFT, false); + litest_dispatch(li); + + litest_assert_scroll(li, LIBINPUT_EVENT_POINTER_SCROLL_CONTINUOUS, 0, 0); +} +END_TEST + START_TEST(pointer_scroll_nowheel_defaults) { struct litest_device *dev = litest_current_device(); @@ -3816,6 +3956,10 @@ TEST_COLLECTION(pointer) } litest_add(pointer_scroll_button_lock_doubleclick_nomove, LITEST_RELATIVE|LITEST_BUTTON, LITEST_ANY); + litest_add(pointer_scroll_button_lock_scroll_releases, LITEST_RELATIVE|LITEST_BUTTON, LITEST_ANY); + litest_add(pointer_scroll_button_lock_scroll_within_grace, LITEST_RELATIVE|LITEST_BUTTON, LITEST_ANY); + litest_add(pointer_scroll_button_lock_hold_no_move_still_locks, LITEST_RELATIVE|LITEST_BUTTON, LITEST_ANY); + litest_add(pointer_scroll_nowheel_defaults, LITEST_RELATIVE|LITEST_BUTTON, LITEST_WHEEL); litest_add_for_device(pointer_scroll_defaults_logitech_marble , LITEST_LOGITECH_TRACKBALL); litest_add(pointer_scroll_natural_defaults, LITEST_WHEEL, LITEST_TABLET);