SIGN IN SIGN UP

refactor(agent): carry a native wheel-mode write as WheelModeChange

The configured wheel mode travelled from the orchestrator to the hardware
writers as `(Option<ScrollResolution>, Option<bool>)`, and the four cases of
that pair were matched onto the three HiResWheel writes twice: in
`apply_wheel_mode` for the volatile reapply, and in
`write_scroll_wheel_mode_in_background` beside a private
`ScrollWheelModeChange` that only that function used.

`hardware::WheelModeChange` is that enum made public, with the one match in
`WheelModeChange::new` (which returns `None` when neither setting is
configured) and the one write in `apply_on`. `configured_wheel_mode` returns
`Option<WheelModeChange>`, so "nothing to write" is decided where the
capabilities and the config are read; the writer no longer has a no-op case,
and its skip log moved to the orchestrator with it.

The wheel log lines carry `change=` instead of separate `resolution=` and
`inverted=` fields.

A truth-table test covers the four cases, including the one the orchestrator's
tests do not reach (both set) and `Some(false)`, which is a configured
inversion rather than an absent one.

Guard: agent-wheel-mode-change-owner flags a `set_scroll_*_on` call in the
agent crates outside `impl WheelModeChange` (6 hits on the parent tree, 0
here).
A
AprilNEA committed
04faf44b7a66f0021b4e47f91b54665b29478f65
Parent: 4aa0eec