ButtonsRebindsFilter: Add support for rebinding to tablet touch rings

This is specifically for the touch rings seen on Wacom tablets. How they work is that can they switch "modes" (which is already handled) and each mode can have it's own rebind. This is only for rings and eventually strips, so fortunately we do not have to retroactively add mode support for our bindings.

Libinput only gives us ring positions in degrees, and leaves the interpretation up to us. I have to add some extra state to ButtonRebindsFilter to keep track of the initial ring position, but I think it works well enough for now.

To add to the complexity a bit, I added a way to configure the "sensitivity" or "speed" of axis keybinds which is really only useful for rings. This does break existing axis keybinds for dials, but no one but developers (like me) would have set any at this point.

See plasma-desktop!3098 (merged) for the UI implementation.

CCBUG: 477752

Edited by Joshua Goins

Merge request reports

Loading