diff --git a/src/driver-etekcity.c b/src/driver-etekcity.c index 7255a8fc..d968028e 100644 --- a/src/driver-etekcity.c +++ b/src/driver-etekcity.c @@ -744,7 +744,7 @@ static const struct ratbag_id etekcity_table[] = { .vendor = USB_VENDOR_ID_ETEKCITY, .product = 0x4011, .version = VERSION_ANY }, - .data = 1, + .svg_filename = "etekcity.svg", }, { }, diff --git a/src/driver-hidpp10.c b/src/driver-hidpp10.c index 06bb4400..21ff0cbd 100644 --- a/src/driver-hidpp10.c +++ b/src/driver-hidpp10.c @@ -273,7 +273,8 @@ static const struct ratbag_id hidpp10drv_table[] = { { .id = LOGITECH_DEVICE(BUS_USB, 0x1028) }, /* G500s */ - { .id = LOGITECH_DEVICE(BUS_USB, 0xc24e) }, + { .id = LOGITECH_DEVICE(BUS_USB, 0xc24e), + .svg_filename = "logitech-g500s.svg" }, { }, }; diff --git a/src/libratbag-private.h b/src/libratbag-private.h index ed16752a..799786b7 100644 --- a/src/libratbag-private.h +++ b/src/libratbag-private.h @@ -54,6 +54,7 @@ struct ratbag { struct ratbag_device { char *name; + const char *svg_name; void *userdata; struct udev_device *udev_device; @@ -74,6 +75,7 @@ struct ratbag_device { struct ratbag_id { struct input_id id; + const char *svg_filename; unsigned long data; }; diff --git a/src/libratbag.c b/src/libratbag.c index 6fb21532..c665fd93 100644 --- a/src/libratbag.c +++ b/src/libratbag.c @@ -287,10 +287,12 @@ ratbag_find_driver(struct ratbag_device *device, const struct input_id *dev_id) if (ratbag_match_id(dev_id, &matching_id->id)) { matched_id.id = *dev_id; matched_id.data = matching_id->data; + matched_id.svg_filename = matching_id->svg_filename; device->driver = driver; rc = driver->probe(device, matched_id); if (rc == 0) { log_debug(ratbag, "driver match found\n"); + device->svg_name = matching_id->svg_filename; return driver; } @@ -438,6 +440,12 @@ ratbag_device_get_name(const struct ratbag_device* device) return device->name; } +LIBRATBAG_EXPORT const char * +ratbag_device_get_svg_name(const struct ratbag_device* device) +{ + return device->svg_name; +} + static void ratbag_register_driver(struct ratbag *ratbag, struct ratbag_driver *driver) { diff --git a/src/libratbag.h b/src/libratbag.h index fe6403c8..a9dfa174 100644 --- a/src/libratbag.h +++ b/src/libratbag.h @@ -386,6 +386,16 @@ ratbag_device_get_user_data(const struct ratbag_device *device); const char * ratbag_device_get_name(const struct ratbag_device* device); +/** + * @ingroup device + * + * @param device A previously initialized ratbag device + * @return The file name of the svg drawing associated with the given ratbag. + * If there is no file associated to the device, NULL is returned. + */ +const char * +ratbag_device_get_svg_name(const struct ratbag_device* device); + /** * @ingroup device */ diff --git a/src/libratbag.sym b/src/libratbag.sym index 28af0c79..625388ae 100644 --- a/src/libratbag.sym +++ b/src/libratbag.sym @@ -21,6 +21,7 @@ global: ratbag_device_get_num_buttons; ratbag_device_get_num_profiles; ratbag_device_get_profile_by_index; + ratbag_device_get_svg_name; ratbag_device_get_user_data; ratbag_device_has_capability; ratbag_device_new_from_udev_device;