From ecb04afcadc96cc8d39749311e4c1c412bebf4a9 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 19 Jun 2017 14:49:07 -0400 Subject: Implement tablet pads --- include/wlr/types.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'include/wlr') diff --git a/include/wlr/types.h b/include/wlr/types.h index 3afc361e..2ca73cc2 100644 --- a/include/wlr/types.h +++ b/include/wlr/types.h @@ -254,8 +254,55 @@ struct wlr_tablet_tool_button { enum wlr_button_state state; }; -// TODO: tablet pad -// TODO: switch +// NOTE: the wlr tablet pad implementation does not currently support tablets +// with more than one mode. I don't own any such hardware so I cannot test it +// and it is too complicated to make a meaningful implementation of blindly. +struct wlr_tablet_pad_impl; +struct wlr_tablet_pad_state; + +struct wlr_tablet_pad { + struct wlr_tablet_pad_impl *impl; + struct wlr_tablet_pad_state *state; + + struct { + struct wl_signal button; + struct wl_signal ring; + struct wl_signal strip; + } events; +}; + +struct wlr_tablet_pad_button { + uint32_t time_sec; + uint64_t time_usec; + uint32_t button; + enum wlr_button_state state; +}; + +enum wlr_tablet_pad_ring_source { + WLR_TABLET_PAD_RING_SOURCE_UNKNOWN, + WLR_TABLET_PAD_RING_SOURCE_FINGER, +}; + +struct wlr_tablet_pad_ring { + uint32_t time_sec; + uint64_t time_usec; + enum wlr_tablet_pad_ring_source source; + uint32_t ring; + double position; +}; + +enum wlr_tablet_pad_strip_source { + WLR_TABLET_PAD_STRIP_SOURCE_UNKNOWN, + WLR_TABLET_PAD_STRIP_SOURCE_FINGER, +}; + +struct wlr_tablet_pad_strip { + uint32_t time_sec; + uint64_t time_usec; + enum wlr_tablet_pad_strip_source source; + uint32_t strip; + double position; +}; enum wlr_input_device_type { WLR_INPUT_DEVICE_KEYBOARD, @@ -284,6 +331,7 @@ struct wlr_input_device { struct wlr_pointer *pointer; struct wlr_touch *touch; struct wlr_tablet_tool *tablet_tool; + struct wlr_tablet_pad *tablet_pad; }; }; -- cgit v1.2.3