libinput: Support custom acceleration profiles
Tested through D-Bus property writes and unit tests, no GUI integration yet.
CC @redstrate & @duha fyi (I'm hoping to steal the tablet KCM's new curve widget for touchpad & mouse in a bit)
Commit message
To mirror libinput's pairing of the "steps" and "points" data in a single function call, we take a lesson from pressure curves and expose acceleration function parameters as a single serialized string property. Despite the parsing, this ends up much simpler than two separate values per acceleration type.
Like libinput, we expose "fallback", "motion" and "scroll" types as separate, optional values. For example, assign point data like "3:0.0,9.0,36.0,81.0" (step + four pointer speed values, from the libinput docs example) to "pointerAccelerationCustomProfileMotion" in order to make your cursor accelerate really hard.
The custom profile will be enabled when at least one type has
valid point data assigned, and the "pointerAccelerationProfile"
property is set to LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM
.