wlroots-hyprland/include/wlr/types/wlr_switch.h

61 lines
1.3 KiB
C

/*
* This an unstable interface of wlroots. No guarantees are made regarding the
* future consistency of this API.
*/
#ifndef WLR_USE_UNSTABLE
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
#endif
#ifndef WLR_TYPES_WLR_SWITCH_H
#define WLR_TYPES_WLR_SWITCH_H
#include <stdint.h>
#include <wayland-server-core.h>
#include <wlr/types/wlr_input_device.h>
struct wlr_switch_impl;
/**
* A switch input device. Typically a switch input device can indicate whether
* a laptop lid is opened or closed, or whether tablet mode is enabled.
*
* See https://wayland.freedesktop.org/libinput/doc/latest/switches.html
*/
struct wlr_switch {
struct wlr_input_device base;
const struct wlr_switch_impl *impl;
struct {
struct wl_signal toggle; // struct wlr_switch_toggle_event
} events;
void *data;
};
enum wlr_switch_type {
WLR_SWITCH_TYPE_LID,
WLR_SWITCH_TYPE_TABLET_MODE,
};
enum wlr_switch_state {
WLR_SWITCH_STATE_OFF = 0,
WLR_SWITCH_STATE_ON,
};
struct wlr_switch_toggle_event {
uint32_t time_msec;
enum wlr_switch_type switch_type;
enum wlr_switch_state switch_state;
};
/**
* Get a struct wlr_switch from a struct wlr_input_device.
*
* Asserts that the input device is a switch.
*/
struct wlr_switch *wlr_switch_from_input_device(
struct wlr_input_device *input_device);
#endif