Re: [PATCH] Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"

Hans de Goede
2022-03-22T11:15:25Z

Hi,

On 3/21/22 19:44, José Expósito wrote:
> This reverts commit 37ef4c19b4c659926ce65a7ac709ceaefb211c40.
>
> The touchpad present in the Dell Precision 7550 and 7750 laptops
> reports a HID_DG_BUTTONTYPE of type MT_BUTTONTYPE_CLICKPAD. However,
> the device is not a clickpad, it is a touchpad with physical buttons.
>
> In order to fix this issue, a quirk for the device was introduced in
> libinput [1] [2] to disable the INPUT_PROP_BUTTONPAD property:
>
> [Precision 7x50 Touchpad]
> MatchBus=i2c
> MatchUdevType=touchpad
> MatchDMIModalias=dmi:*svnDellInc.:pnPrecision7?50*
> AttrInputPropDisable=INPUT_PROP_BUTTONPAD
>
> However, because of the change introduced in 37ef4c19b4 ("Input: clear
> BTN_RIGHT/MIDDLE on buttonpads") the BTN_RIGHT key bit is not mapped
> anymore breaking the device right click button and making impossible to
> workaround it in user space.
>
> In order to avoid breakage on other present or future devices, revert
> the patch causing the issue.
>
> Cc: stable@vger.kernel.org
> Link: https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/481 [1]
> Link: https://bugzilla.redhat.com/show_bug.cgi?id=1868789 [2]
> Signed-off-by: José Expósito <jose.exposito89@gmail.com>

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans

> ---
> drivers/input/input.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index c3139bc2aa0d..ccaeb2426385 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -2285,12 +2285,6 @@ int input_register_device(struct input_dev *dev)
> /* KEY_RESERVED is not supposed to be transmitted to userspace. */
> __clear_bit(KEY_RESERVED, dev->keybit);
>
> - /* Buttonpads should not map BTN_RIGHT and/or BTN_MIDDLE. */
> - if (test_bit(INPUT_PROP_BUTTONPAD, dev->propbit)) {
> - __clear_bit(BTN_RIGHT, dev->keybit);
> - __clear_bit(BTN_MIDDLE, dev->keybit);
> - }
> -
> /* Make sure that bitmasks not mentioned in dev->evbit are clean. */
> input_cleanse_bitmasks(dev);
>