Errno Ebadf (@EBADF) commented about dlls/winewayland.drv/wayland_pointer.c:
input.mi.dy = screen.y; input.mi.dwFlags = MOUSEEVENTF_MOVE;
- TRACE("hwnd=%p wayland_dxdy=%.2f,%.2f screen_dxdy=%d,%d\n",
hwnd, wl_fixed_to_double(dx), wl_fixed_to_double(dy),
- TRACE("hwnd=%p rawinput=%d wayland_dxdy=%.2f,%.2f screen_dxdy=%d,%d\n",
hwnd, waylanddrv_rawinput_flag, delta_x, delta_y, (int)screen.x, (int)screen.y);
- NtUserSendHardwareInput(hwnd, 0, &input, 0);
- NtUserSendHardwareInput(hwnd, waylanddrv_rawinput_flag, &input, 0);
Need to send two NtUserSendHardwareInput() calls. - First with SEND_HWMSG_NO_RAW with the normal accelerated relative motion. - Second with SEND_HWMSG_NO_MSG with the unaccelerated relative motion.
If you don't have those flags then wine will automatically create a rawinput (WM_INPUT) event from a normal (WM_MOUSEMOVE) event.