From a43f1edbfe9813ef32877292b086096ec27142fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Wed, 28 Feb 2024 16:18:54 +0100 Subject: [PATCH] Add libinput_device_get_id_bustype() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow to get the device bus type ID in addition to its vid and pid. Closes: https://gitlab.freedesktop.org/libinput/libinput/-/issues/975 Signed-off-by: José Expósito Part-of: --- src/evdev.c | 6 ++++++ src/evdev.h | 3 +++ src/libinput.c | 6 ++++++ src/libinput.h | 13 +++++++++++++ src/libinput.sym | 1 + test/test-device.c | 5 ++++- 6 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/evdev.c b/src/evdev.c index f3b4f9f1..da538df7 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2517,6 +2517,12 @@ evdev_device_get_name(struct evdev_device *device) return device->devname; } +unsigned int +evdev_device_get_id_bustype(struct evdev_device *device) +{ + return libevdev_get_id_bustype(device->evdev); +} + unsigned int evdev_device_get_id_product(struct evdev_device *device) { diff --git a/src/evdev.h b/src/evdev.h index 7e2567be..f954938c 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -473,6 +473,9 @@ evdev_device_get_sysname(struct evdev_device *device); const char * evdev_device_get_name(struct evdev_device *device); +unsigned int +evdev_device_get_id_bustype(struct evdev_device *device); + unsigned int evdev_device_get_id_product(struct evdev_device *device); diff --git a/src/libinput.c b/src/libinput.c index 0b42db2e..5bebe56b 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -3304,6 +3304,12 @@ libinput_device_get_name(struct libinput_device *device) return evdev_device_get_name((struct evdev_device *) device); } +LIBINPUT_EXPORT unsigned int +libinput_device_get_id_bustype(struct libinput_device *device) +{ + return evdev_device_get_id_bustype((struct evdev_device *) device); +} + LIBINPUT_EXPORT unsigned int libinput_device_get_id_product(struct libinput_device *device) { diff --git a/src/libinput.h b/src/libinput.h index 0c14098a..85403be5 100644 --- a/src/libinput.h +++ b/src/libinput.h @@ -4197,6 +4197,19 @@ libinput_device_get_sysname(struct libinput_device *device); const char * libinput_device_get_name(struct libinput_device *device); +/** + * @ingroup device + * + * Get the bus type ID for this device. + * + * @param device A previously obtained device + * @return The bus type ID of this device (see BUS_* in linux/input.h) + * + * @since 1.26 + */ +unsigned int +libinput_device_get_id_bustype(struct libinput_device *device); + /** * @ingroup device * diff --git a/src/libinput.sym b/src/libinput.sym index f48e39e2..3624401c 100644 --- a/src/libinput.sym +++ b/src/libinput.sym @@ -335,6 +335,7 @@ LIBINPUT_1.23 { } LIBINPUT_1.21; LIBINPUT_1.26 { + libinput_device_get_id_bustype; libinput_device_tablet_pad_get_num_dials; libinput_event_tablet_pad_get_dial_delta_v120; libinput_event_tablet_pad_get_dial_number; diff --git a/test/test-device.c b/test/test-device.c index a117ac65..55dd12b1 100644 --- a/test/test-device.c +++ b/test/test-device.c @@ -748,14 +748,17 @@ START_TEST(device_ids) { struct litest_device *dev = litest_current_device(); const char *name; - unsigned int pid, vid; + unsigned int bus, pid, vid; name = libevdev_get_name(dev->evdev); + bus = libevdev_get_id_bustype(dev->evdev); pid = libevdev_get_id_product(dev->evdev); vid = libevdev_get_id_vendor(dev->evdev); ck_assert_str_eq(name, libinput_device_get_name(dev->libinput_device)); + ck_assert_int_eq(bus, + libinput_device_get_id_bustype(dev->libinput_device)); ck_assert_int_eq(pid, libinput_device_get_id_product(dev->libinput_device)); ck_assert_int_eq(vid,