4 #include "libds/keyboard.h"
5 #include "libds/seat.h"
7 struct ds_seat_pointer_grab;
9 struct ds_pointer_grab_interface
11 void (*enter)(struct ds_seat_pointer_grab *grab,
12 struct ds_surface *surface, double sx, double sy);
13 void (*clear_focus)(struct ds_seat_pointer_grab *grab);
14 void (*motion)(struct ds_seat_pointer_grab *grab, uint32_t time_msec,
15 double sx, double sy);
16 uint32_t (*button)(struct ds_seat_pointer_grab *grab, uint32_t time_msec,
17 uint32_t button, enum ds_button_state state);
18 void (*axis)(struct ds_seat_pointer_grab *grab, uint32_t time_msec,
19 enum ds_axis_orientation orientation, double value,
20 int32_t value_discrete, enum ds_axis_source source);
21 void (*frame)(struct ds_seat_pointer_grab *grab);
22 void (*cancel)(struct ds_seat_pointer_grab *grab);
25 struct ds_seat_keyboard_grab;
27 struct ds_keyboard_grab_interface
29 void (*enter)(struct ds_seat_keyboard_grab *grab,
30 struct ds_surface *surface, uint32_t keycodes[],
31 size_t num_keycodes, struct ds_keyboard_modifiers *modifiers);
32 void (*clear_focus)(struct ds_seat_keyboard_grab *grab);
33 void (*key)(struct ds_seat_keyboard_grab *grab, uint32_t time_msec,
34 uint32_t key, uint32_t state);
35 void (*modifiers)(struct ds_seat_keyboard_grab *grab,
36 struct ds_keyboard_modifiers *modifiers);
37 void (*cancel)(struct ds_seat_keyboard_grab *grab);
40 struct ds_touch_point;
42 struct ds_seat_touch_grab;
44 struct ds_touch_grab_interface
46 uint32_t (*down)(struct ds_seat_touch_grab *grab, uint32_t time_msec,
47 struct ds_touch_point *point);
48 void (*up)(struct ds_seat_touch_grab *grab, uint32_t time_msec,
49 struct ds_touch_point *point);
50 void (*motion)(struct ds_seat_touch_grab *grab, uint32_t time_msec,
51 struct ds_touch_point *point);
52 void (*enter)(struct ds_seat_touch_grab *grab, uint32_t time_msec,
53 struct ds_touch_point *point);
54 void (*frame)(struct ds_seat_touch_grab *grab);
55 void (*cancel)(struct ds_seat_touch_grab *grab);
58 struct ds_seat_pointer_grab
60 const struct ds_pointer_grab_interface *iface;
65 struct ds_seat_keyboard_grab
67 const struct ds_keyboard_grab_interface *iface;
72 struct ds_seat_touch_grab
74 const struct ds_touch_grab_interface *iface;
79 void ds_seat_pointer_start_grab(struct ds_seat *seat,
80 struct ds_seat_pointer_grab *grab);
82 void ds_seat_pointer_end_grab(struct ds_seat *seat);
84 void ds_seat_pointer_enter(struct ds_seat *seat, struct ds_surface *surface,
85 double sx, double sy);
87 void ds_seat_pointer_clear_focus(struct ds_seat *seat);
89 void ds_seat_pointer_send_motion(struct ds_seat *seat, uint32_t time_msec,
90 double sx, double sy);
92 uint32_t ds_seat_pointer_send_button(struct ds_seat *seat, uint32_t time_msec,
93 uint32_t button, enum ds_button_state state);
95 void ds_seat_pointer_send_axis(struct ds_seat *seat, uint32_t time_msec,
96 enum ds_axis_orientation orientation, double value,
97 int32_t value_discrete, enum ds_axis_source source);
99 void ds_seat_pointer_send_frame(struct ds_seat *seat);
101 void ds_seat_keyboard_start_grab(struct ds_seat *seat,
102 struct ds_seat_keyboard_grab *grab);
104 void ds_seat_keyboard_end_grab(struct ds_seat *seat);
106 void ds_seat_keyboard_enter(struct ds_seat *seat, struct ds_surface *surface,
107 uint32_t keycodes[], size_t num_keycodes,
108 struct ds_keyboard_modifiers *modifiers);
110 void ds_seat_keyboard_clear_focus(struct ds_seat *seat);
112 void ds_seat_keyboard_send_key(struct ds_seat *seat, uint32_t time_msec,
113 uint32_t key, uint32_t state);
115 void ds_seat_keyboard_send_modifiers(struct ds_seat *seat,
116 struct ds_keyboard_modifiers *modifiers);
118 void ds_seat_touch_start_grab(struct ds_seat *seat,
119 struct ds_seat_touch_grab *grab);
121 void ds_seat_touch_end_grab(struct ds_seat *seat);
123 uint32_t ds_seat_touch_send_down(struct ds_seat *seat,
124 struct ds_surface *surface, uint32_t time_msec, int32_t touch_id,
125 double sx, double sy);
127 void ds_seat_touch_send_up(struct ds_seat *seat, uint32_t time_msec,
130 void ds_seat_touch_send_motion(struct ds_seat *seat, uint32_t time_msec,
131 int32_t touch_id, double sx, double sy);
133 void ds_seat_touch_send_frame(struct ds_seat *seat);