Working switches in rootston:

Factor out switch handling to separate file
Add formal enum for toggle action
Implement binding actions
This commit is contained in:
Ryan Walklin 2018-11-28 20:03:42 +00:00 committed by Ryan Walklin
parent 62a9cf87fa
commit 810c7b700c
7 changed files with 60 additions and 16 deletions

33
rootston/switch.c Normal file
View file

@ -0,0 +1,33 @@
#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) {
bool device_match = false;
bool state_match = false;
if ((sc->name != NULL && strcmp(event->device->name, sc->name) == 0) ||
(sc->name == NULL && event->switch_type == sc->switch_type)) {
device_match = true;
}
if (!device_match) {
break;
}
if (sc->switch_state == WLR_SWITCH_STATE_TOGGLE ||
event->switch_state == sc->switch_state) {
state_match = true;
}
if (device_match && state_match) {
execute_binding_command(lid_switch->seat, lid_switch->seat->input, sc->command);
}
}
}