diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/backend/libinput.h | 9 | ||||
-rw-r--r-- | include/types.h | 8 | ||||
-rw-r--r-- | include/wlr/types.h | 52 |
3 files changed, 67 insertions, 2 deletions
diff --git a/include/backend/libinput.h b/include/backend/libinput.h index 80f57177..89286ab8 100644 --- a/include/backend/libinput.h +++ b/include/backend/libinput.h @@ -68,4 +68,13 @@ void handle_tablet_tool_tip(struct libinput_event *event, void handle_tablet_tool_button(struct libinput_event *event, struct libinput_device *device); +struct wlr_tablet_pad *wlr_libinput_tablet_pad_create( + struct libinput_device *device); +void handle_tablet_pad_button(struct libinput_event *event, + struct libinput_device *device); +void handle_tablet_pad_ring(struct libinput_event *event, + struct libinput_device *device); +void handle_tablet_pad_strip(struct libinput_event *event, + struct libinput_device *device); + #endif diff --git a/include/types.h b/include/types.h index e2930a9f..2063c3f5 100644 --- a/include/types.h +++ b/include/types.h @@ -53,6 +53,14 @@ struct wlr_tablet_tool *wlr_tablet_tool_create(struct wlr_tablet_tool_impl *impl struct wlr_tablet_tool_state *state); void wlr_tablet_tool_destroy(struct wlr_tablet_tool *tool); +struct wlr_tablet_pad_impl { + void (*destroy)(struct wlr_tablet_pad_state *pad); +}; + +struct wlr_tablet_pad *wlr_tablet_pad_create(struct wlr_tablet_pad_impl *impl, + struct wlr_tablet_pad_state *state); +void wlr_tablet_pad_destroy(struct wlr_tablet_pad *pad); + struct wlr_input_device_impl { void (*destroy)(struct wlr_input_device_state *state); }; 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; }; }; |