diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/backend/libinput.h | 5 | ||||
| -rw-r--r-- | include/rootston/bindings.h | 9 | ||||
| -rw-r--r-- | include/rootston/config.h | 10 | ||||
| -rw-r--r-- | include/rootston/seat.h | 2 | ||||
| -rw-r--r-- | include/rootston/switch.h | 18 | ||||
| -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 | 
10 files changed, 118 insertions, 0 deletions
diff --git a/include/backend/libinput.h b/include/backend/libinput.h index 9531091f..f4886956 100644 --- a/include/backend/libinput.h +++ b/include/backend/libinput.h @@ -55,6 +55,11 @@ void handle_pointer_button(struct libinput_event *event,  void handle_pointer_axis(struct libinput_event *event,  		struct libinput_device *device); +struct wlr_switch *create_libinput_switch( +		struct libinput_device *device); +void handle_switch_toggle(struct libinput_event *event, +		struct libinput_device *device); +  struct wlr_touch *create_libinput_touch(  		struct libinput_device *device);  void handle_touch_down(struct libinput_event *event, diff --git a/include/rootston/bindings.h b/include/rootston/bindings.h new file mode 100644 index 00000000..db38130b --- /dev/null +++ b/include/rootston/bindings.h @@ -0,0 +1,9 @@ +#ifndef ROOTSTON_BINDINGS_H +#define ROOTSTON_BINDINGS_H + +#include "rootston/seat.h" +#include "rootston/input.h" + +void execute_binding_command(struct roots_seat *seat, struct roots_input *input, const char *command); + +#endif //ROOTSTON_BINDINGS_H diff --git a/include/rootston/config.h b/include/rootston/config.h index 86699c6a..f8132269 100644 --- a/include/rootston/config.h +++ b/include/rootston/config.h @@ -3,6 +3,7 @@  #include <xf86drmMode.h>  #include <wlr/types/wlr_input_device.h> +#include <wlr/types/wlr_switch.h>  #include <wlr/types/wlr_output_layout.h>  #define ROOTS_CONFIG_DEFAULT_SEAT_NAME "seat0" @@ -65,6 +66,14 @@ struct roots_cursor_config {  	struct wl_list link;  }; +struct roots_switch_config { +	char *name; +	enum wlr_switch_type switch_type; +	enum wlr_switch_state switch_state; +	char *command; +	struct wl_list link; +}; +  struct roots_config {  	bool xwayland;  	bool xwayland_lazy; @@ -74,6 +83,7 @@ struct roots_config {  	struct wl_list bindings;  	struct wl_list keyboards;  	struct wl_list cursors; +	struct wl_list switches;  	char *config_path;  	char *startup_cmd; diff --git a/include/rootston/seat.h b/include/rootston/seat.h index 0187c6cc..105ba3aa 100644 --- a/include/rootston/seat.h +++ b/include/rootston/seat.h @@ -5,6 +5,7 @@  #include "rootston/input.h"  #include "rootston/keyboard.h"  #include "rootston/layers.h" +#include "rootston/switch.h"  #include "rootston/text_input.h"  struct roots_seat { @@ -32,6 +33,7 @@ struct roots_seat {  	struct wl_list keyboards;  	struct wl_list pointers; +	struct wl_list switches;  	struct wl_list touch;  	struct wl_list tablets;  	struct wl_list tablet_pads; diff --git a/include/rootston/switch.h b/include/rootston/switch.h new file mode 100644 index 00000000..28197774 --- /dev/null +++ b/include/rootston/switch.h @@ -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 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  | 
