From 1dad790a7f84f019eb829bb7b91154a8e66b617c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Sun, 15 Dec 2013 17:50:04 +0100 Subject: [PATCH] Introduce libinput_device_get_sysname() API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jonas Ã…dahl --- src/evdev.c | 9 +++++++++ src/evdev.h | 5 +++++ src/libinput.c | 6 ++++++ src/libinput.h | 11 +++++++++++ src/udev-seat.c | 4 +++- 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/evdev.c b/src/evdev.c index 7d023c0c..22d969e8 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -617,6 +617,7 @@ register_device_capabilities(struct evdev_device *device) struct evdev_device * evdev_device_create(struct libinput_seat *seat, const char *devnode, + const char *sysname, int fd) { struct libinput *libinput = seat->libinput; @@ -633,6 +634,7 @@ evdev_device_create(struct libinput_seat *seat, device->is_mt = 0; device->mtdev = NULL; device->devnode = strdup(devnode); + device->sysname = strdup(sysname); device->mt.slot = -1; device->rel.dx = 0; device->rel.dy = 0; @@ -686,6 +688,12 @@ evdev_device_get_output(struct evdev_device *device) return device->output_name; } +const char * +evdev_device_get_sysname(struct evdev_device *device) +{ + return device->sysname; +} + void evdev_device_calibrate(struct evdev_device *device, float calibration[6]) { @@ -749,5 +757,6 @@ evdev_device_destroy(struct evdev_device *device) free(device->devname); free(device->devnode); + free(device->sysname); free(device); } diff --git a/src/evdev.h b/src/evdev.h index e11af5d9..1a42bd8e 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -71,6 +71,7 @@ struct evdev_device { struct evdev_dispatch *dispatch; char *output_name; char *devnode; + char *sysname; char *devname; int fd; struct { @@ -132,6 +133,7 @@ struct evdev_dispatch { struct evdev_device * evdev_device_create(struct libinput_seat *seat, const char *devnode, + const char *sysname, int fd); struct evdev_dispatch * @@ -149,6 +151,9 @@ evdev_device_get_keys(struct evdev_device *device, char *keys, size_t size); const char * evdev_device_get_output(struct evdev_device *device); +const char * +evdev_device_get_sysname(struct evdev_device *device); + void evdev_device_calibrate(struct evdev_device *device, float calibration[6]); diff --git a/src/libinput.c b/src/libinput.c index a563e944..3e56a306 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -927,6 +927,12 @@ libinput_device_get_user_data(struct libinput_device *device) return device->user_data; } +LIBINPUT_EXPORT const char * +libinput_device_get_sysname(struct libinput_device *device) +{ + return evdev_device_get_sysname((struct evdev_device *) device); +} + LIBINPUT_EXPORT const char * libinput_device_get_output_name(struct libinput_device *device) { diff --git a/src/libinput.h b/src/libinput.h index e63e36c4..8e3b8278 100644 --- a/src/libinput.h +++ b/src/libinput.h @@ -636,6 +636,17 @@ libinput_device_set_user_data(struct libinput_device *device, void *user_data); void * libinput_device_get_user_data(struct libinput_device *device); +/** + * @ingroup device + * + * Get the system name of the device. + * + * @param device A previously obtained device + * @return System name of the device + */ +const char * +libinput_device_get_sysname(struct libinput_device *device); + /** * @ingroup device * diff --git a/src/udev-seat.c b/src/udev-seat.c index 8d3ad25d..1b8899a1 100644 --- a/src/udev-seat.c +++ b/src/udev-seat.c @@ -45,6 +45,7 @@ device_added(struct udev_device *udev_device, struct udev_input *input) struct libinput *libinput = &input->base; struct evdev_device *device; const char *devnode; + const char *sysname; const char *device_seat, *seat_name, *output_name; const char *calibration_values; int fd; @@ -58,6 +59,7 @@ device_added(struct udev_device *udev_device, struct udev_input *input) return 0; devnode = udev_device_get_devnode(udev_device); + sysname = udev_device_get_sysname(udev_device); /* Search for matching logical seat */ seat_name = udev_device_get_property_value(udev_device, "WL_SEAT"); @@ -78,7 +80,7 @@ device_added(struct udev_device *udev_device, struct udev_input *input) return 0; } - device = evdev_device_create(&seat->base, devnode, fd); + device = evdev_device_create(&seat->base, devnode, sysname, fd); if (device == EVDEV_UNHANDLED_DEVICE) { close_restricted(libinput, fd); log_info("not using input device '%s'.\n", devnode);