aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/input/input-manager.c11
-rw-r--r--sway/ipc-json.c8
2 files changed, 13 insertions, 6 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 056cc3ea..089e1e71 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -65,8 +65,15 @@ struct sway_seat *input_manager_sway_seat_from_wlr_seat(struct wlr_seat *wlr_sea
}
char *input_device_get_identifier(struct wlr_input_device *device) {
- int vendor = device->vendor;
- int product = device->product;
+ int vendor = 0, product = 0;
+#if WLR_HAS_LIBINPUT_BACKEND
+ if (wlr_input_device_is_libinput(device)) {
+ struct libinput_device *libinput_dev = wlr_libinput_get_device_handle(device);
+ vendor = libinput_device_get_id_vendor(libinput_dev);
+ product = libinput_device_get_id_product(libinput_dev);
+ }
+#endif
+
char *name = strdup(device->name ? device->name : "");
strip_whitespace(name);
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index dfbb7a6e..81ca3483 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -1097,10 +1097,6 @@ json_object *ipc_json_describe_input(struct sway_input_device *device) {
json_object_new_string(device->identifier));
json_object_object_add(object, "name",
json_object_new_string(device->wlr_device->name));
- json_object_object_add(object, "vendor",
- json_object_new_int(device->wlr_device->vendor));
- json_object_object_add(object, "product",
- json_object_new_int(device->wlr_device->product));
json_object_object_add(object, "type",
json_object_new_string(
input_device_get_type(device)));
@@ -1154,6 +1150,10 @@ json_object *ipc_json_describe_input(struct sway_input_device *device) {
libinput_dev = wlr_libinput_get_device_handle(device->wlr_device);
json_object_object_add(object, "libinput",
describe_libinput_device(libinput_dev));
+ json_object_object_add(object, "vendor",
+ json_object_new_int(libinput_device_get_id_vendor(libinput_dev)));
+ json_object_object_add(object, "product",
+ json_object_new_int(libinput_device_get_id_product(libinput_dev)));
}
#endif