Factor out switch handling to separate file Add formal enum for toggle action Implement binding actionsmaster
parent
62a9cf87fa
commit
810c7b700c
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef ROOTSTON_SWITCH_H
|
||||||
|
#define ROOTSTON_SWITCH_H
|
||||||
|
|
||||||
|
#include "rootston/input.h"
|
||||||
|
|
||||||
|
struct roots_switch {
|
||||||
|
struct roots_seat *seat;
|
||||||
|
struct wlr_input_device *device;
|
||||||
|
struct wl_listener device_destroy;
|
||||||
|
|
||||||
|
struct wl_listener toggle;
|
||||||
|
struct wl_list link;
|
||||||
|
};
|
||||||
|
|
||||||
|
void roots_switch_handle_toggle(struct roots_switch *lid_switch,
|
||||||
|
struct wlr_event_switch_toggle *event);
|
||||||
|
|
||||||
|
#endif // ROOTSTON_SWITCH_H
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue