mbox series

[v2,00/12] HID: fix for generic input processing

Message ID 20220203143226.4023622-1-benjamin.tissoires@redhat.com
Headers show
Series HID: fix for generic input processing | expand

Message

Benjamin Tissoires Feb. 3, 2022, 2:32 p.m. UTC
Hi,

this is the v2 of my series which reworks the HID report processing.

I took Ping's comments into account, and amended my MR with the
regression tests[0].
More specifically, the tests (and thus this new version of the series)
enforces that only one BTN_TOOL_* event gets forwarded between each
EV_SYN frame, and that BTN_TOUCH are properly translated too.

This also magivally solved some worrying transitions we had in the
pen state machine where the pen was jumping from "eraser" to "in
contact". This new behavior enforces a "out-of-range" state in the
middle, making it easier for userspace to understand now.

Again, tests are welcome :)

Cheers,
Benjamin

[0] https://gitlab.freedesktop.org/libevdev/hid-tools/-/merge_requests/127

Benjamin Tissoires (12):
  HID: core: statically allocate read buffers
  HID: core: de-duplicate some code in hid_input_field()
  HID: core: split data fetching from processing in hid_input_field()
  HID: input: tag touchscreens as such if the physical is not there
  HID: input: rework spaghetti code with switch statements
  HID: input: move up out-of-range processing of input values
  HID: compute an ordered list of input fields to process
  HID: core: for input reports, process the usages by priority list
  HID: input: enforce Invert usage to be processed before InRange
  HID: input: remove the need for HID_QUIRK_INVERT
  HID: input: accommodate priorities for slotted devices
  Input: docs: add more details on the use of BTN_TOOL

 Documentation/input/event-codes.rst |   6 +-
 drivers/hid/hid-core.c              | 280 ++++++++++++++++++---
 drivers/hid/hid-input.c             | 364 ++++++++++++++++++++++------
 include/linux/hid.h                 |  23 +-
 4 files changed, 568 insertions(+), 105 deletions(-)

Comments

Jiri Kosina March 1, 2022, 2:53 p.m. UTC | #1
On Thu, 3 Feb 2022, Benjamin Tissoires wrote:

> Hi,
> 
> this is the v2 of my series which reworks the HID report processing.
> 
> I took Ping's comments into account, and amended my MR with the
> regression tests[0].
> More specifically, the tests (and thus this new version of the series)
> enforces that only one BTN_TOOL_* event gets forwarded between each
> EV_SYN frame, and that BTN_TOUCH are properly translated too.
> 
> This also magivally solved some worrying transitions we had in the
> pen state machine where the pen was jumping from "eraser" to "in
> contact". This new behavior enforces a "out-of-range" state in the
> middle, making it easier for userspace to understand now.
> 
> Again, tests are welcome :)
> 
> Cheers,
> Benjamin
> 
> [0] https://gitlab.freedesktop.org/libevdev/hid-tools/-/merge_requests/127
> 
> Benjamin Tissoires (12):
>   HID: core: statically allocate read buffers
>   HID: core: de-duplicate some code in hid_input_field()
>   HID: core: split data fetching from processing in hid_input_field()
>   HID: input: tag touchscreens as such if the physical is not there
>   HID: input: rework spaghetti code with switch statements
>   HID: input: move up out-of-range processing of input values
>   HID: compute an ordered list of input fields to process
>   HID: core: for input reports, process the usages by priority list
>   HID: input: enforce Invert usage to be processed before InRange
>   HID: input: remove the need for HID_QUIRK_INVERT
>   HID: input: accommodate priorities for slotted devices
>   Input: docs: add more details on the use of BTN_TOOL
> 
>  Documentation/input/event-codes.rst |   6 +-
>  drivers/hid/hid-core.c              | 280 ++++++++++++++++++---
>  drivers/hid/hid-input.c             | 364 ++++++++++++++++++++++------
>  include/linux/hid.h                 |  23 +-
>  4 files changed, 568 insertions(+), 105 deletions(-)

This is now in hid.git#for-5.18/core.

Thanks a lot Benjamin, very nice work.