aboutsummaryrefslogtreecommitdiff
path: root/rootston/switch.c
blob: f95a8e079a4c3a0a13d9ba052cc82d1433fc50c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdlib.h>
#include <wlr/util/log.h>
#include "rootston/bindings.h"

void roots_switch_handle_toggle(struct roots_switch *switch_device,
		struct wlr_event_switch_toggle *event) {
	struct wl_list *bound_switches =
		&switch_device->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(switch_device->seat,
			switch_device->seat->input, sc->command);
	}
}