e6e1e9a6d6b103251470acf36eaf3a95c04e28fe
Surface Dial Renewed Driver
This is a concept rewrite of the Surface Dial userspace driver. It is kept separate from the existing daemon so the new event model can be tested without touching the current code.
Goals
- Multitouch scrolling first.
- Regular wheel scrolling as a fallback mode.
- Dial sensitivity adjustment by holding the button and rotating.
- Desktop notification feedback for sensitivity changes.
- Small, explicit state machines instead of mode/thread sprawl.
Run
cargo run --manifest-path renewed_driver/Cargo.toml -- --mode multitouch
Regular wheel mode:
cargo run --manifest-path renewed_driver/Cargo.toml -- --mode wheel
Multitouch timing can be tuned without recompiling:
cargo run --manifest-path renewed_driver/Cargo.toml -- --mode multitouch --mt-idle-ms 100 --mt-idle-max-ms 1500 --mt-settle-ms 80
The process still needs access to the Surface Dial event device and
/dev/uinput, just like the original daemon.
Controls
- Rotate: scroll.
- Hold and rotate: change sensitivity.
- Release after changing sensitivity: resume scroll mode.
Sensitivity levels are 1 through 32. KDE displays the current value through the native OSD text path, with desktop notifications used only as a fallback.
Documentation
Detailed architecture, behavior, protocol, install, and troubleshooting notes
live under doc/.
Languages
Rust
96.5%
Shell
3.5%