diff --git a/sway/input/cursor.c b/sway/input/cursor.c index 3299c8646..c8bcb2834 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -167,7 +167,11 @@ static void handle_cursor_motion(struct wl_listener *listener, void *data) { if (!cursor->locked) { wlr_cursor_move(cursor->cursor, event->device, event->delta_x, event->delta_y); - cursor_send_pointer_motion(cursor, event->time_msec); + cursor_send_pointer_motion(cursor, event->time_usec / 1000); + } else { + wlr_seat_pointer_notify_relative_motion(cursor->seat->wlr_seat, + event->time_usec, event->delta_x, event->delta_y, + event->noaccel.delta_x, event->noaccel.delta_y); } } diff --git a/sway/server.c b/sway/server.c index 7a87ca6a9..786a62337 100644 --- a/sway/server.c +++ b/sway/server.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -132,6 +133,8 @@ bool server_init(struct sway_server *server) { wl_signal_add(&server->pointer_constraints->events.request_constraint, &server->request_constraint); + wlr_relative_pointer_manager_v1_create(server->wl_display); + input_manager = input_manager_create(server); return true; }