From 4dba42555f123e68b81d3587c9ea55ecc0d40d84 Mon Sep 17 00:00:00 2001
From: Brian Ashworth <bosrsf04@gmail.com>
Date: Wed, 9 Jan 2019 22:25:01 -0500
Subject: get_inputs: add libinput send events mode

Add `libinput_send_events` to the IPC output for `get_inputs` to allow
scripting of mode changes.
---
 sway/ipc-json.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

(limited to 'sway')

diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 53e0e335..19930319 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -11,6 +11,7 @@
 #include "sway/output.h"
 #include "sway/input/input-manager.h"
 #include "sway/input/seat.h"
+#include <wlr/backend/libinput.h>
 #include <wlr/types/wlr_box.h>
 #include <wlr/types/wlr_output.h>
 #include <xkbcommon/xkbcommon.h>
@@ -598,6 +599,26 @@ json_object *ipc_json_describe_input(struct sway_input_device *device) {
 		}
 	}
 
+	if (wlr_input_device_is_libinput(device->wlr_device)) {
+		struct libinput_device *libinput_dev;
+		libinput_dev = wlr_libinput_get_device_handle(device->wlr_device);
+
+		const char *events = "unknown";
+		switch (libinput_device_config_send_events_get_mode(libinput_dev)) {
+		case LIBINPUT_CONFIG_SEND_EVENTS_ENABLED:
+			events = "enabled";
+			break;
+		case LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE:
+			events = "disabled_on_external_mouse";
+			break;
+		case LIBINPUT_CONFIG_SEND_EVENTS_DISABLED:
+			events = "disabled";
+			break;
+		}
+		json_object_object_add(object, "libinput_send_events",
+				json_object_new_string(events));
+	}
+
 	return object;
 }
 
-- 
cgit v1.2.3