diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-12-20 11:56:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-20 11:56:39 -0500 |
commit | 373def44468e0c919031a6ffe3049f91680e05ca (patch) | |
tree | e40dfdcc9292a71fcc2160bc5d643a66996664dc /sway/ipc-json.c | |
parent | a51e74beb91a98181d6bc69137d377cd49e72d1f (diff) | |
parent | 63f7fb95172a72436698a1562b4f7ea1e9100a7e (diff) | |
download | sway-373def44468e0c919031a6ffe3049f91680e05ca.tar.xz |
Merge pull request #1505 from acrisci/feature/input
input management and seat
Diffstat (limited to 'sway/ipc-json.c')
-rw-r--r-- | sway/ipc-json.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 09a32c1b..bab9a201 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c @@ -141,3 +141,40 @@ json_object *ipc_json_describe_container_recursive(swayc_t *c) { return object; } + +static const char *describe_device_type(struct sway_input_device *device) { + switch (device->wlr_device->type) { + case WLR_INPUT_DEVICE_POINTER: + return "pointer"; + case WLR_INPUT_DEVICE_KEYBOARD: + return "keyboard"; + case WLR_INPUT_DEVICE_TOUCH: + return "touch"; + case WLR_INPUT_DEVICE_TABLET_TOOL: + return "tablet_tool"; + case WLR_INPUT_DEVICE_TABLET_PAD: + return "tablet_pad"; + } + return "unknown"; +} + +json_object *ipc_json_describe_input(struct sway_input_device *device) { + if (!(sway_assert(device, "Device must not be null"))) { + return NULL; + } + + json_object *object = json_object_new_object(); + + json_object_object_add(object, "identifier", + 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(describe_device_type(device))); + + return object; +} |