~ruther/dwl

ac6074f4fdb8cc263c877f08e16a5805d3bb22d2 — Guido Cella 1 year, 2 months ago 433385f
implement the virtual pointer protocol

This is used by programs like warpd.
1 files changed, 17 insertions(+), 0 deletions(-)

M dwl.c
M dwl.c => dwl.c +17 -0
@@ 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)
{

Do not follow this link