diff --git a/include/labwc.h b/include/labwc.h index 68c54692..84cb7713 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -142,6 +143,7 @@ struct server { struct wlr_output_configuration_v1 *pending_output_config; struct wlr_foreign_toplevel_manager_v1 *foreign_toplevel_manager; + struct wlr_relative_pointer_manager_v1 *relative_pointer_manager; /* Set when in cycle (alt-tab) mode */ struct view *cycle_view; diff --git a/src/cursor.c b/src/cursor.c index 413b8c87..fb22baa3 100644 --- a/src/cursor.c +++ b/src/cursor.c @@ -148,6 +148,11 @@ process_cursor_motion(struct seat *seat, uint32_t time_msec, { struct server *server = seat->server; + wlr_relative_pointer_manager_v1_send_relative_motion( + seat->server->relative_pointer_manager, + seat->seat, (uint64_t)time_msec * 1000, + dx, dy, dx_unaccel, dy_unaccel); + /* * The cursor doesn't move unless we tell it to. The cursor * automatically handles constraining the motion to the output layout, diff --git a/src/server.c b/src/server.c index 0b944bfe..641b0243 100644 --- a/src/server.c +++ b/src/server.c @@ -286,6 +286,8 @@ server_init(struct server *server) server->foreign_toplevel_manager = wlr_foreign_toplevel_manager_v1_create(server->wl_display); + server->relative_pointer_manager = + wlr_relative_pointer_manager_v1_create(server->wl_display); layers_init(server);