ACK: [PATCH] HID: multitouch: handle external buttons for Precision Touchpads

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

ACK: [PATCH] HID: multitouch: handle external buttons for Precision Touchpads

Po-Hsu Lin (Sam)
On Thu, Aug 3, 2017 at 3:20 PM, AceLan Kao <[hidden email]> wrote:

> From: Benjamin Tissoires <[hidden email]>
>
> BugLink: https://bugs.launchpad.net/bugs/1708372
>
> According to https://msdn.microsoft.com/en-us/library/windows/hardware/mt604195(v=vs.85).aspx
> external buttons have some weird usage mapping:
> - Button 2 Indicates Button State for external button for primary
>   (default left) clicking.
> - Button 3 Indicates Button State for external button for secondary
>   (default right) clicking.
>
> So in the current state, the buttons are mapped to right and middle.
> Move the usage by one to correctly map the external buttons.
>
> Tested-by: Chris Chiu <[hidden email]>
> Signed-off-by: Benjamin Tissoires <[hidden email]>
> Signed-off-by: Jiri Kosina <[hidden email]>
> (cherry picked from commit 594312b88b0f451912c964c7ff2c0eaa71ad41b4)
> Signed-off-by: AceLan Kao <[hidden email]>
Clean cherry-pick with positive test result.

Acked-by: Po-Hsu Lin <[hidden email]>

> ---
>  drivers/hid/hid-multitouch.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index f62a9d6..2177721 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -567,6 +567,14 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
>
>         case HID_UP_BUTTON:
>                 code = BTN_MOUSE + ((usage->hid - 1) & HID_USAGE);
> +               /*
> +                * MS PTP spec says that external buttons left and right have
> +                * usages 2 and 3.
> +                */
> +               if (cls->name == MT_CLS_WIN_8 &&
> +                   field->application == HID_DG_TOUCHPAD &&
> +                   (usage->hid & HID_USAGE) > 1)
> +                       code--;
>                 hid_map_usage(hi, usage, bit, max, EV_KEY, code);
>                 input_set_capability(hi->input, EV_KEY, code);
>                 return 1;
> --
> 2.7.4
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Loading...