Introduce libinput_device_get_sysname() API
authorJonas Ådahl <jadahl@gmail.com>
Sun, 15 Dec 2013 16:50:04 +0000 (17:50 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Sun, 15 Dec 2013 16:50:04 +0000 (17:50 +0100)
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
src/evdev.c
src/evdev.h
src/libinput.c
src/libinput.h
src/udev-seat.c

index 7d023c0..22d969e 100644 (file)
@@ -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);
 }
index e11af5d..1a42bd8 100644 (file)
@@ -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]);
 
index a563e94..3e56a30 100644 (file)
@@ -928,6 +928,12 @@ libinput_device_get_user_data(struct libinput_device *device)
 }
 
 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)
 {
        return evdev_device_get_output((struct evdev_device *) device);
index e63e36c..8e3b827 100644 (file)
@@ -639,6 +639,17 @@ 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
+ *
  * A device may be mapped to a single output, or all available outputs. If a
  * device is mapped to a single output only, a relative device may not move
  * beyond the boundaries of this output. An absolute device has its input
index 8d3ad25..1b8899a 100644 (file)
@@ -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);