[WIP][DONTMERGE]Add support for libinput_switch input devices

These are used primarily by laptops to signal
the state of the lid (open/closed) and tablet
mode if supported, based on ACPI events.
This commit is contained in:
Ryan Walklin 2018-11-14 23:24:55 +00:00 committed by Ryan Walklin
parent 8a56b96c55
commit 2a3c62b4d2
18 changed files with 261 additions and 1 deletions

View file

@ -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',

View file

@ -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

View file

@ -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',

View file

@ -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;

View file

@ -0,0 +1,46 @@
/*
* 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 = 1,
};
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