What happens
Holding a gesture button (Middle/Back/Forward in gesture mode) and swiping does
nothing on Windows. Only the plain click on release fires. The same binding works
on macOS and Linux.
Why
crates/openlogi-hook/src/windows.rs never emits MouseEvent::Moved — the
WH_MOUSE_LL translation handles buttons and both wheel axes, but not
WM_MOUSEMOVE. SwipeAccumulator therefore sees zero travel for the whole hold
and can never reach GESTURE_SWIPE_THRESHOLD.
The reason it was left out: WH_MOUSE_LL carries the cursor position
(MSLLHOOKSTRUCT.pt), not a delta, and the OS clamps that position to the desktop
bounds. macOS (MOUSE_EVENT_DELTA_X) and Linux (REL_X) both get the device's own
relative counts for free.
Two candidate fixes
They are alternatives, not a sequence — one of them lands.
Environment
Windows 11, OpenLogi 0.6.22, Logitech G502 X LIGHTSPEED.
What happens
Holding a gesture button (Middle/Back/Forward in gesture mode) and swiping does
nothing on Windows. Only the plain click on release fires. The same binding works
on macOS and Linux.
Why
crates/openlogi-hook/src/windows.rsnever emitsMouseEvent::Moved— theWH_MOUSE_LLtranslation handles buttons and both wheel axes, but notWM_MOUSEMOVE.SwipeAccumulatortherefore sees zero travel for the whole holdand can never reach
GESTURE_SWIPE_THRESHOLD.The reason it was left out:
WH_MOUSE_LLcarries the cursor position(
MSLLHOOKSTRUCT.pt), not a delta, and the OS clamps that position to the desktopbounds. macOS (
MOUSE_EVENT_DELTA_X) and Linux (REL_X) both get the device's ownrelative counts for free.
Two candidate fixes
MSLLHOOKSTRUCT.ptagainst the previous point in a thread-local.~15 lines, no new APIs. A swipe that runs into a screen edge stops producing
deltas and may not reach the threshold.
WM_INPUT,RIDEV_INPUTSINK) and read the device'srelative counts. No edge clamping, and matches the other two platforms. Costs a
message-only sink window, a batched
GetRawInputBufferdrain on the hook thread,and ordering care between the two input paths.
They are alternatives, not a sequence — one of them lands.
Environment
Windows 11, OpenLogi 0.6.22, Logitech G502 X LIGHTSPEED.