aboutsummaryrefslogtreecommitdiff
path: root/rootston/switch.c
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-12-15 19:54:25 +0100
committerGitHub <noreply@github.com>2018-12-15 19:54:25 +0100
commit6d4bfa3226123e958ff2bdc4f226489cba49f84d (patch)
tree256c7c3ded68d4b95ed09f7a2fbfd5bc67dbcee9 /rootston/switch.c
parent8a56b96c5516ee089b7561949aac4f83e5b94808 (diff)
parentf8129ecbc5147a62d93d6bac5e61e5ce79d89667 (diff)
Merge pull request #1377 from tokyovigilante/switch-events
Add support for libinput_switch input devices
Diffstat (limited to 'rootston/switch.c')
-rw-r--r--rootston/switch.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/rootston/switch.c b/rootston/switch.c
new file mode 100644
index 00000000..65c5e627
--- /dev/null
+++ b/rootston/switch.c
@@ -0,0 +1,26 @@
+#include <stdlib.h>
+
+#include <wlr/util/log.h>
+
+#include "rootston/bindings.h"
+#include "rootston/config.h"
+#include "rootston/input.h"
+#include "rootston/seat.h"
+#include "rootston/switch.h"
+
+void roots_switch_handle_toggle(struct roots_switch *lid_switch,
+ struct wlr_event_switch_toggle *event) {
+ struct wl_list *bound_switches = &lid_switch->seat->input->server->config->switches;
+ struct roots_switch_config *sc;
+ wl_list_for_each(sc, bound_switches, link) {
+ if ((sc->name != NULL && strcmp(event->device->name, sc->name) != 0) &&
+ (sc->name == NULL && event->switch_type != sc->switch_type)) {
+ continue;
+ }
+ if (sc->switch_state != WLR_SWITCH_STATE_TOGGLE &&
+ event->switch_state != sc->switch_state) {
+ continue;
+ }
+ execute_binding_command(lid_switch->seat, lid_switch->seat->input, sc->command);
+ }
+}