On Thu, 17 Oct 2024, Gerecke, Jason wrote: > From: Jason Gerecke <jason.gerecke@xxxxxxxxx> > > Microsoft defines two slightly different behaviors for pens that are > being used to erase. The first one, for pens that can be used while > inverted specifies that both 'Invert' and 'Eraser' usages should be > set while the pen is in contact and erasing. For pens that use an > eraser button though, they specify that only the 'Eraser' usage should > be set (while hovering, only the 'Invert' usage is to be set). > > We used our internal 'invert_state' flag to determine if a pen has an > intent to erase (whether hovering or not). That flag was previously > only depending on the 'Invert' usage, which was sufficient for the > first type of pen (EMR) but not the second type (AES). This commit > makes the flag depend on either usage being set, and also renames it > to make its function more clear. > > This change should not normally have an impact on userspace due to > both the existing driver and firmware design. The driver already only > determines tool type based on the first event in an interaction (e.g. > it will see the 'Invert' bit set when the eraser comes into prox and > then report BTN_TOOL_RUBBER for the rest of the interaction, even if > 'Invert' is cleared). AES firmware is also careful to send reports > that work through a set of defined state transitions, even in the > corner-case where the eraser button is pressed when the pen is already > in contact with the display (Prox|Tip -> Prox -> 0 -> Invert -> Eraser). > Regardless, it seems reasonable to ensure the driver's state variables > match programmer expectation. > > Link: https://learn.microsoft.com/en-us/windows-hardware/design/component-guidelines/windows-pen-states > Signed-off-by: Jason Gerecke <jason.gerecke@xxxxxxxxx> > --- > drivers/hid/wacom_wac.c | 7 +++++-- > drivers/hid/wacom_wac.h | 2 +- > 2 files changed, 6 insertions(+), 3 deletions(-) Applied to hid.git#for-6.13/wacom. Thanks, -- Jiri Kosina SUSE Labs