Draft: Add support for tablet dials

Open Joshua Goins requested to merge work/redstrate/dials into master

This is not supposed to merge yet! This is supposed to be a reference implementation for the libinput MR. See below.

This adds support for the new libinput tablet dial events, which are relative scroll-like events that range from -1 to 1. These are currently emulated as regular mousewheel scrolls at the moment.


My Artist 22R Pro has two of these small dials, which are similar to Wacom rings (so I've heard) but they are actually scrollwheels that emit EV_REL events. I already discussed this downstream and submitted the relevant patches (linux-input, udev, libinput) and now it's KWin's turn.


Why did this happen now?

Previously, the dials on this tablet did work because they emit EV_REL scrollwheel events. However, udev misclassified this as a mouse (due to there being EV_REL events, go figure) and KWin gladly passed these along from libinput. Since fixing the udev bug though, obviously EV_REL never makes it past libinput. See my libinput MR for changing this behavior, and exposing a new tablet dial event.

Why is KWin not passing down the relevant tablet event instead?

Because implementing the tablet event into Qt is going to be another long process, this MR will at least emulate what users expect the dials to do right now. Ideally, we would expose this, make it configurable like buttons, but it's going to take a lot of work. In the meantime, mapping them to their previous values I think is OK.

Edited by Joshua Goins

Merge request reports