diff options
| author | Guido Cella <guido@guidocella.xyz> | 2024-01-24 22:47:50 +0100 | 
|---|---|---|
| committer | Leonardo Hernández Hernández <leohdz172@proton.me> | 2024-01-25 17:13:01 +0000 | 
| commit | ac6074f4fdb8cc263c877f08e16a5805d3bb22d2 (patch) | |
| tree | c6580d3a9d7842b5ae77d1caba3c348c6a3be558 /dwl.c | |
| parent | 433385f7f18abb607c4feff6d6c7fa817071a710 (diff) | |
implement the virtual pointer protocol
This is used by programs like warpd.
Diffstat (limited to 'dwl.c')
| -rw-r--r-- | dwl.c | 17 | 
1 files changed, 17 insertions, 0 deletions
@@ -47,6 +47,7 @@  #include <wlr/types/wlr_subcompositor.h>  #include <wlr/types/wlr_viewporter.h>  #include <wlr/types/wlr_virtual_keyboard_v1.h> +#include <wlr/types/wlr_virtual_pointer_v1.h>  #include <wlr/types/wlr_xcursor_manager.h>  #include <wlr/types/wlr_xdg_activation_v1.h>  #include <wlr/types/wlr_xdg_decoration_v1.h> @@ -328,6 +329,7 @@ static void updatetitle(struct wl_listener *listener, void *data);  static void urgent(struct wl_listener *listener, void *data);  static void view(const Arg *arg);  static void virtualkeyboard(struct wl_listener *listener, void *data); +static void virtualpointer(struct wl_listener *listener, void *data);  static Monitor *xytomon(double x, double y);  static void xytonode(double x, double y, struct wlr_surface **psurface,  		Client **pc, LayerSurface **pl, double *nx, double *ny); @@ -361,6 +363,7 @@ static struct wlr_layer_shell_v1 *layer_shell;  static struct wlr_output_manager_v1 *output_mgr;  static struct wlr_gamma_control_manager_v1 *gamma_control_mgr;  static struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard_mgr; +static struct wlr_virtual_pointer_manager_v1 *virtual_pointer_mgr;  static struct wlr_cursor_shape_manager_v1 *cursor_shape_mgr;  static struct wlr_cursor *cursor; @@ -2330,6 +2333,9 @@ setup(void)  	LISTEN_STATIC(&backend->events.new_input, inputdevice);  	virtual_keyboard_mgr = wlr_virtual_keyboard_manager_v1_create(dpy);  	LISTEN_STATIC(&virtual_keyboard_mgr->events.new_virtual_keyboard, virtualkeyboard); +	virtual_pointer_mgr = wlr_virtual_pointer_manager_v1_create(dpy); +	LISTEN_STATIC(&virtual_pointer_mgr->events.new_virtual_pointer, virtualpointer); +  	seat = wlr_seat_create(dpy, "seat0");  	LISTEN_STATIC(&seat->events.request_set_cursor, setcursor);  	LISTEN_STATIC(&seat->events.request_set_selection, setsel); @@ -2731,6 +2737,17 @@ virtualkeyboard(struct wl_listener *listener, void *data)  	wlr_keyboard_group_add_keyboard(vkb_group.wlr_group, &keyboard->keyboard);  } +void +virtualpointer(struct wl_listener *listener, void *data) +{ +	struct wlr_virtual_pointer_v1_new_pointer_event *event = data; +	struct wlr_pointer pointer = event->new_pointer->pointer; + +	wlr_cursor_attach_input_device(cursor, &pointer.base); +	if (event->suggested_output) +		wlr_cursor_map_input_to_output(cursor, &pointer.base, event->suggested_output); +} +  Monitor *  xytomon(double x, double y)  {  | 
