tablet: add tablet tool scroll

This commit is contained in:
Louis Goyard 2024-03-12 00:09:43 +09:00
parent 50eae512d9
commit 5225a4ccce
9 changed files with 133 additions and 0 deletions

View file

@ -124,6 +124,8 @@ void handle_tablet_tool_tip(struct libinput_event *event,
struct wlr_tablet *tablet);
void handle_tablet_tool_button(struct libinput_event *event,
struct wlr_tablet *tablet);
void handle_tablet_tool_scroll_continuous(struct libinput_event *event,
struct wlr_tablet *tablet);
void init_device_tablet_pad(struct wlr_libinput_input_device *dev);
void finish_device_tablet_pad(struct wlr_libinput_input_device *dev);

View file

@ -73,6 +73,7 @@ struct wlr_cursor {
struct wl_signal tablet_tool_proximity;
struct wl_signal tablet_tool_tip;
struct wl_signal tablet_tool_button;
struct wl_signal tablet_tool_axis_scroll;
} events;
void *data;

View file

@ -12,6 +12,7 @@
#include <stdint.h>
#include <wayland-server-core.h>
#include <wlr/types/wlr_input_device.h>
#include <wlr/types/wlr_seat.h>
/*
* Copy+Paste from libinput, but this should neither use libinput, nor
@ -72,6 +73,7 @@ struct wlr_tablet {
struct wl_signal proximity;
struct wl_signal tip;
struct wl_signal button;
struct wl_signal axis_scroll;
} events;
struct wl_array paths; // char *
@ -145,6 +147,16 @@ struct wlr_tablet_tool_button_event {
enum wlr_button_state state;
};
struct wlr_tablet_tool_axis_scroll_event {
struct wlr_tablet *tablet;
struct wlr_tablet_tool *tool;
uint32_t time_msec;
enum wl_pointer_axis_source source;
enum wl_pointer_axis orientation;
enum wl_pointer_axis_relative_direction relative_direction;
double delta;
};
/**
* Get a struct wlr_tablet from a struct wlr_input_device.
*

View file

@ -179,6 +179,11 @@ void wlr_send_tablet_v2_tablet_tool_button(
struct wlr_tablet_v2_tablet_tool *tool, uint32_t button,
enum zwp_tablet_pad_v2_button_state state);
void wlr_send_tablet_v2_tablet_tool_axis_scroll(
struct wlr_tablet_v2_tablet_tool *tool, uint32_t time_msec,
enum wl_pointer_axis orientation, double value,
enum wl_pointer_axis_source source,
enum wl_pointer_axis_relative_direction relative_direction);
void wlr_tablet_v2_tablet_tool_notify_proximity_in(
@ -217,6 +222,12 @@ void wlr_tablet_v2_tablet_tool_notify_button(
struct wlr_tablet_v2_tablet_tool *tool, uint32_t button,
enum zwp_tablet_pad_v2_button_state state);
void wlr_tablet_v2_tablet_tool_notify_scroll(
struct wlr_tablet_v2_tablet_tool *tool, uint32_t time_msec,
enum wl_pointer_axis orientation, double value,
enum wl_pointer_axis_source source,
enum wl_pointer_axis_relative_direction relative_direction);
struct wlr_tablet_tool_v2_grab_interface {
void (*proximity_in)(
@ -246,6 +257,13 @@ struct wlr_tablet_tool_v2_grab_interface {
void (*button)(
struct wlr_tablet_tool_v2_grab *grab, uint32_t button,
enum zwp_tablet_pad_v2_button_state state);
void (*axis_scroll)(
struct wlr_tablet_tool_v2_grab *grab, uint32_t time_msec,
enum wl_pointer_axis orientation, double value,
enum wl_pointer_axis_source source,
enum wl_pointer_axis_relative_direction relative_direction);
void (*cancel)(struct wlr_tablet_tool_v2_grab *grab);
};