Hyote wrote: ↑24 Nov 2025, 13:02
Vocaleyes wrote: ↑24 Nov 2025, 11:50
For anyone interested, heres how linux is also involved.
So while Linux doesn't use DWM, linux libinput uses li_fixed_t data type for coordinate storage and processing, not standard floating-point. The libinput source code shows pointer delta values are stored in li_fixed_t x and li_fixed_t y format.
li_fixed_t is a fixed-point representation, which is a hybrid between integer and floating-point precision. However, the key finding is wayland’s touch calibration protocol explicitly uses 32-bit floating point format for calibration matrix values, and Wayland compositors apply floating-point based transformation matrices when processing coordinates. Microsoft Learn
Linux's X11 and Wayland input transformation pipeline uses affine transformation matrices (3x3 matrices) with floating-point values to transform coordinates. These matrices are applied to accumulate coordinate transformations across multiple processing stages.
Wayland's floating-point transformation matrices would affect mouse input in the exact same way DWM and PS4 do.
For all the previous reasons, I explicitly tried evdev and the issues remained. Although I didn't do any kind of a deep dive into these topics like you did now.
evdev passes raw integer deltas from the kernel (REL_X, REL_Y as pure integers). However, evdev is just the transport layer, it's not the end of the input pipeline.
Everything built on top of evdev (libinput, Wayland compositor, X11 server) performs floating-point normalization and transformation on those integer values.
in normal Linux usage, you cannot bypass libinput and the compositor, they are mandatory processing layers.
So in practical terms, yes, evdev-based systems exhibit the issue because the problem is not evdev itself, but the floating-point normalization and transformation layers that process evdev's integer output.