Documentation

Development

ScrollShift is a C++20 project built with CMake. Development remains evidence-first: input transforms are kept deterministic and fixture-testable, while real-hardware experiments are used for device ownership, recovery, compatibility and feel.

Build

make
make test
./build/scrollshift --help

The equivalent CMake flow is cmake -S . -B build, cmake --build build and ctest --test-dir build --output-on-failure. ScrollShift requires Linux, C++20 and CMake 3.20+.

Development tools

scrollshift devices, monitor, doctor and environment provide the project's own reconnaissance path. The automated suite now includes recorded hardware fixtures, complete wheel-semantics tests and a fixed-seed 100,000-packet property campaign, so most transform work can be validated without grabbing a real mouse.

Safety while experimenting

Exclusive input grabs can temporarily prevent the desktop from receiving events from a device. ScrollShift has passed normal shutdown, forced SIGKILL, receiver unplug/replug and suspend/resume recovery on the primary test machine; development should continue to preserve that fail-open behavior as a hard invariant.

Current compatibility evidence

The first desktop compatibility pass was run on Linux 7.0, Ubuntu/GNOME and Wayland. Chrome, VS Code, the terminal and Files all behaved well with the balanced profile. A PDF viewer remained usable but showed weaker, jumpier acceleration. These results are deliberately scoped to that environment; they are evidence, not a claim of universal Wayland compatibility.

Roadmap →