Re: [PATCH 0/3] Input: add ABS_TWIST and support it in HID and Wacom

From: Siarhei Vishniakou

Date: Tue Nov 10 2026 - 16:32:47 EST


пн, 9 нояб. 2026 г. в 18:25, Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>:
>
> Hi Siarhei,
>
> On Mon, Nov 09, 2026 at 06:06:29PM -0800, Siarhei Vishniakou wrote:
> > Some styli can report rotation along their long ("barrel") axis,
> > commonly referred to as "twist". While the HID specification defines
> > this usage as HID_DG_TWIST (0x000d0041) in the Digitizers page, there is
> > currently no corresponding evdev axis code to expose it to userspace.
> >
> > Because evdev has no MSC_SCAN equivalent for axes, drivers and OEMs
> > currently work around this by mapping stylus twist onto unrelated axes
> > such as ABS_Z or ABS_RZ. As a result, userspace input stacks must
> > maintain device-specific workarounds to know which axis carries twist.
>
> How is it different from orientation?
>
> Thanks.
>
> --
> Dmitry

ABS_MT_ORIENTATION describes the 2D angle of the contact ellipse (or
tool projection) on the surface of the touchscreen. Looking strictly at that
initial sentence in multi-touch-protocol.rst, it sounds promising:

> ABS_MT_ORIENTATION ... The value should describe a signed quarter of a
> revolution clockwise around the touch center.

However, the rest of the section clarifies that this is the alignment of
the contact ellipse with the X/Y axes, not the "twist" of the finger
itself. In fact, the docs note that orientation can be omitted if the
contact area is circular - even though a circular finger or stylus tip
could still spin in place, and that rotation would not be conveyed.

For a stylus, orientation is equivalent to the tilt
projected onto the touchscreen plane (which single-tool stylus drivers already
capture via ABS_TILT_X / ABS_TILT_Y).
By contrast, the proposed ABS_TWIST can be thought of as keeping the
stylus at a fixed position and tilt angle, and using two fingers to roll
it in place like a pencil.

This also matches the HID Digitizers specification, which defines
Azimuth (0x3f, rotation of the tool projection around the surface Z
axis) separately from Twist (0x41, clockwise rotation of the tool around
its own major axis), and hid-multitouch already maps HID_DG_AZIMUTH to
ABS_MT_ORIENTATION. Since styli can report tilt/azimuth and twist at the
same time (and single-tool pen devices don't use ABS_MT_* events), twist
needs a dedicated axis.