2022-02-04 13:53:11

by Benjamin Tissoires

[permalink] [raw]
Subject: [PATCH v2 12/12] Input: docs: add more details on the use of BTN_TOOL

The HID core stack used to be very relaxed considering the BTN_TOOL_*
usage. With the recent commits, we should now enforce to have only one
tool at a time, meaning that we can now express that requirement in the
docs.

Signed-off-by: Benjamin Tissoires <[email protected]>

---

changes in v2:
- changed to explain that switching tool in one EV_SYN report
is not nice for userspace
---
Documentation/input/event-codes.rst | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/Documentation/input/event-codes.rst b/Documentation/input/event-codes.rst
index b24ae7d292cc..8741d390b184 100644
--- a/Documentation/input/event-codes.rst
+++ b/Documentation/input/event-codes.rst
@@ -137,7 +137,11 @@ A few EV_KEY codes have special meanings:
code should be set to a value of 1. When the tool is no longer interacting
with the input device, the BTN_TOOL_<name> code should be reset to 0. All
trackpads, tablets, and touchscreens should use at least one BTN_TOOL_<name>
- code when events are generated.
+ code when events are generated. Likewise all trackpads, tablets, and
+ touchscreens should export only one BTN_TOOL_<name> at a time. To not break
+ existing userspace, it is recommended to not switch tool in one EV_SYN frame
+ but first emitting the old BTN_TOOL_<name> at 0, then emit one SYN_REPORT
+ and then set the new BTN_TOOL_<name> at 1.

* BTN_TOUCH:

--
2.33.1


2022-02-16 07:36:38

by Peter Hutterer

[permalink] [raw]
Subject: Re: [PATCH v2 12/12] Input: docs: add more details on the use of BTN_TOOL

On Thu, Feb 03, 2022 at 03:32:26PM +0100, Benjamin Tissoires wrote:
> The HID core stack used to be very relaxed considering the BTN_TOOL_*
> usage. With the recent commits, we should now enforce to have only one
> tool at a time, meaning that we can now express that requirement in the
> docs.
>
> Signed-off-by: Benjamin Tissoires <[email protected]>
>
> ---
>
> changes in v2:
> - changed to explain that switching tool in one EV_SYN report
> is not nice for userspace
> ---
> Documentation/input/event-codes.rst | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/input/event-codes.rst b/Documentation/input/event-codes.rst
> index b24ae7d292cc..8741d390b184 100644
> --- a/Documentation/input/event-codes.rst
> +++ b/Documentation/input/event-codes.rst
> @@ -137,7 +137,11 @@ A few EV_KEY codes have special meanings:
> code should be set to a value of 1. When the tool is no longer interacting
> with the input device, the BTN_TOOL_<name> code should be reset to 0. All
> trackpads, tablets, and touchscreens should use at least one BTN_TOOL_<name>
> - code when events are generated.
> + code when events are generated. Likewise all trackpads, tablets, and
> + touchscreens should export only one BTN_TOOL_<name> at a time. To not break

I still think s/export/set to nonzero/ to avoid any ambiguity with setting the
evbit on the device vs setting the value to nonzero here, but the remainder is
good, thanks :)

Acked-by: Peter Hutterer <[email protected]>

Cheers,
Peter


> + existing userspace, it is recommended to not switch tool in one EV_SYN frame
> + but first emitting the old BTN_TOOL_<name> at 0, then emit one SYN_REPORT
> + and then set the new BTN_TOOL_<name> at 1.
>
> * BTN_TOUCH:
>
> --
> 2.33.1
>