fix(client-linux): absolute mouse was dropped — pack the surface size in flags
ci / web (push) Failing after 45s
ci / rust (push) Successful in 1m1s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 4s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 3s
apple / swift (push) Successful in 1m18s
ci / docs-site (push) Failing after 42s
docker / deploy-docs (push) Successful in 17s
ci / web (push) Failing after 45s
ci / rust (push) Successful in 1m1s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 4s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 3s
apple / swift (push) Successful in 1m18s
ci / docs-site (push) Failing after 42s
docker / deploy-docs (push) Successful in 17s
The MouseMoveAbs wire contract packs the client coordinate-space size as (width << 16) | height in `flags` (same as touch); injectors normalize against it and drop the event when it is zero. The GTK client sent flags=0, so KWin's libei path refused every motion (`emitted=false`) — found via the first real user test from home-worker-3. - ui_stream: send_abs() packs the negotiated mode into flags for motion + click-position events. - core input.rs: document the contract on MouseMoveAbs itself (it was only implied by TouchDown's doc). - client-rs --input-test: add a MouseMoveAbs sweep so the absolute path stays covered — Moonlight and the Mac client only send relative motion, which is why this gap survived every prior live test. Validated live against serve --native: kind=MouseMoveAbs emitted=true. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -273,7 +273,10 @@ enum PunktfunkInputKind
|
||||
PUNKTFUNK_INPUT_KIND_KEY_UP = 1,
|
||||
// Relative motion: `x`/`y` carry `dx`/`dy`.
|
||||
PUNKTFUNK_INPUT_KIND_MOUSE_MOVE = 2,
|
||||
// Absolute motion: `x`/`y` carry pixel coordinates.
|
||||
// Absolute motion: `x`/`y` carry pixel coordinates and `flags` packs the client's
|
||||
// coordinate-space size as `(width << 16) | height` (the same contract as
|
||||
// [`TouchDown`](Self::TouchDown)) — injectors normalize against it before mapping
|
||||
// into the output region and **drop the event when it is zero**.
|
||||
PUNKTFUNK_INPUT_KIND_MOUSE_MOVE_ABS = 3,
|
||||
PUNKTFUNK_INPUT_KIND_MOUSE_BUTTON_DOWN = 4,
|
||||
PUNKTFUNK_INPUT_KIND_MOUSE_BUTTON_UP = 5,
|
||||
|
||||
Reference in New Issue
Block a user