diff options
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/interfaces/meson.build | 1 | ||||
-rw-r--r-- | include/wlr/interfaces/wlr_switch.h | 22 | ||||
-rw-r--r-- | include/wlr/types/meson.build | 1 | ||||
-rw-r--r-- | include/wlr/types/wlr_input_device.h | 3 | ||||
-rw-r--r-- | include/wlr/types/wlr_switch.h | 47 |
5 files changed, 74 insertions, 0 deletions
diff --git a/include/wlr/interfaces/meson.build b/include/wlr/interfaces/meson.build index 207896b5..7d4d811d 100644 --- a/include/wlr/interfaces/meson.build +++ b/include/wlr/interfaces/meson.build @@ -3,6 +3,7 @@ install_headers( 'wlr_keyboard.h', 'wlr_output.h', 'wlr_pointer.h', + 'wlr_switch.h', 'wlr_tablet_pad.h', 'wlr_tablet_tool.h', 'wlr_touch.h', diff --git a/include/wlr/interfaces/wlr_switch.h b/include/wlr/interfaces/wlr_switch.h new file mode 100644 index 00000000..0b0454f5 --- /dev/null +++ b/include/wlr/interfaces/wlr_switch.h @@ -0,0 +1,22 @@ +/* + * 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_INTERFACES_WLR_SWITCH_H +#define WLR_INTERFACES_WLR_SWITCH_H + +#include <wlr/types/wlr_switch.h> + +struct wlr_switch_impl { + void (*destroy)(struct wlr_switch *lid_switch); +}; + +void wlr_switch_init(struct wlr_switch *lid_switch, + struct wlr_switch_impl *impl); +void wlr_switch_destroy(struct wlr_switch *lid_switch); + +#endif diff --git a/include/wlr/types/meson.build b/include/wlr/types/meson.build index e2ce86e3..752c0dea 100644 --- a/include/wlr/types/meson.build +++ b/include/wlr/types/meson.build @@ -32,6 +32,7 @@ install_headers( 'wlr_seat.h', 'wlr_server_decoration.h', 'wlr_surface.h', + 'wlr_switch.h', 'wlr_tablet_pad.h', 'wlr_tablet_tool.h', 'wlr_tablet_v2.h', diff --git a/include/wlr/types/wlr_input_device.h b/include/wlr/types/wlr_input_device.h index ab0aecb6..f948d55b 100644 --- a/include/wlr/types/wlr_input_device.h +++ b/include/wlr/types/wlr_input_device.h @@ -20,6 +20,7 @@ enum wlr_input_device_type { WLR_INPUT_DEVICE_TOUCH, WLR_INPUT_DEVICE_TABLET_TOOL, WLR_INPUT_DEVICE_TABLET_PAD, + WLR_INPUT_DEVICE_SWITCH, }; /* Note: these are circular dependencies */ @@ -28,6 +29,7 @@ enum wlr_input_device_type { #include <wlr/types/wlr_touch.h> #include <wlr/types/wlr_tablet_tool.h> #include <wlr/types/wlr_tablet_pad.h> +#include <wlr/types/wlr_switch.h> struct wlr_input_device_impl; @@ -46,6 +48,7 @@ struct wlr_input_device { void *_device; struct wlr_keyboard *keyboard; struct wlr_pointer *pointer; + struct wlr_switch *lid_switch; struct wlr_touch *touch; struct wlr_tablet *tablet; struct wlr_tablet_pad *tablet_pad; diff --git a/include/wlr/types/wlr_switch.h b/include/wlr/types/wlr_switch.h new file mode 100644 index 00000000..df1c8579 --- /dev/null +++ b/include/wlr/types/wlr_switch.h @@ -0,0 +1,47 @@ +/* + * 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.h> +#include <wlr/types/wlr_input_device.h> +#include <wlr/types/wlr_list.h> + +struct wlr_switch_impl; + +struct wlr_switch { + struct wlr_switch_impl *impl; + + struct { + struct wl_signal toggle; + } events; + + void *data; +}; + +enum wlr_switch_type { + WLR_SWITCH_TYPE_LID = 1, + WLR_SWITCH_TYPE_TABLET_MODE, +}; + +enum wlr_switch_state { + WLR_SWITCH_STATE_OFF = 0, + WLR_SWITCH_STATE_ON, + WLR_SWITCH_STATE_TOGGLE +}; + +struct wlr_event_switch_toggle { + struct wlr_input_device *device; + uint32_t time_msec; + enum wlr_switch_type switch_type; + enum wlr_switch_state switch_state; +}; + +#endif |