diff --git a/src/libinput-plugin-button-debounce.c b/src/libinput-plugin-button-debounce.c index 5648ab4a..3766e5f0 100644 --- a/src/libinput-plugin-button-debounce.c +++ b/src/libinput-plugin-button-debounce.c @@ -34,6 +34,7 @@ #include "libinput-log.h" #include "libinput-plugin-button-debounce.h" #include "libinput-plugin.h" +#include "libinput-private.h" #include "libinput-util.h" #include "quirks.h" #include "timer.h" @@ -755,6 +756,9 @@ debounce_plugin_device_added(struct libinput_plugin *libinput_plugin, if (!libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER)) return; + if (libinput_device_is_virtual(device)) + return; + _unref_(udev_device) *udev_device = libinput_device_get_udev_device(device); if (udev_device) { const char *prop = udev_device_get_property_value(udev_device, diff --git a/src/libinput-private.h b/src/libinput-private.h index a4b6f5e9..b49a5838 100644 --- a/src/libinput-private.h +++ b/src/libinput-private.h @@ -730,6 +730,9 @@ libinput_device_init(struct libinput_device *device, struct libinput_seat *seat) bool libinput_device_has_model_quirk(struct libinput_device *device, enum quirk model_quirk); +bool +libinput_device_is_virtual(struct libinput_device *device); + void libinput_device_disable_feature(struct libinput_device *device, enum libinput_feature feature); diff --git a/src/libinput.c b/src/libinput.c index 95b82eab..af0593f6 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -2252,6 +2252,12 @@ libinput_device_has_model_quirk(struct libinput_device *device, enum quirk model return result; } +bool +libinput_device_is_virtual(struct libinput_device *device) +{ + return evdev_device_is_virtual((struct evdev_device *)device); +} + static uint32_t update_seat_key_count(struct libinput_seat *seat, keycode_t keycode,