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

Po-Hsu Lin po-hsu.lin at canonical.com
Fri Aug 4 03:26:55 UTC 2017


On Thu, Aug 3, 2017 at 3:20 PM, AceLan Kao <acelan.kao at canonical.com> wrote:
> From: Benjamin Tissoires <benjamin.tissoires at redhat.com>
>
> 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 <chiu at endlessm.com>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires at redhat.com>
> Signed-off-by: Jiri Kosina <jkosina at suse.cz>
> (cherry picked from commit 594312b88b0f451912c964c7ff2c0eaa71ad41b4)
> Signed-off-by: AceLan Kao <acelan.kao at canonical.com>
Clean cherry-pick with positive test result.

Acked-by: Po-Hsu Lin <po-hsu.lin at canonical.com>

> ---
>  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
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team





More information about the kernel-team mailing list