From: "José Expósito" <jose.exposito89@gmail.com>
To: jikos@kernel.org
Cc: benjamin.tissoires@redhat.com, peter.hutterer@who-t.net,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
"José Expósito" <jose.exposito89@gmail.com>
Subject: [PATCH 0/1] Do not map BTN_RIGHT/MIDDLE on buttonpads
Date: Tue, 23 Nov 2021 20:12:37 +0100 [thread overview]
Message-ID: <20211123191238.12472-1-jose.exposito89@gmail.com> (raw)
Hi all,
Historically, libinput has relayed on the INPUT_PROP_BUTTONPAD property
to detect buttonpads.
Since buttonpads are expected to have only one button (BTN_LEFT),
recently we added a new rule to detect buttonpads: Where a touchpad
maps the BTN_RIGHT bit, libinput assumes it is NOT a buttonpad.
However, this change leaded to several false possitives, so we ended up
reverting it. For more context:
https://gitlab.freedesktop.org/libinput/libinput/-/issues/704
And for a full list of affected hardware, HID reports and bug reports
please see:
https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/726
My understanding is that buttonpads should not map BTN_RIGHT and/or
BTN_MIDDLE and to avoid it I would like to fix the required drivers.
One option to fix it (this patch) is to clear the bits that might have
been added because of the HID descriptor on every driver.
However, since this code will be common to all drivers, I would like to
ask if you consider it worth it to add a function to handle adding
properties.
A function similar to input_set_capability but for props could be added
in input.h/c:
/**
* input_set_property - add a property to the device
* @dev: device to add the property to
* @property: type of the property (INPUT_PROP_POINTER, INPUT_PROP_DIRECT...)
*
* In addition to setting up corresponding bit in dev->propbit the function
* might add or remove related capabilities.
*/
void input_set_property(struct input_dev *dev, unsigned int property)
{
switch (property) {
case INPUT_PROP_POINTER:
case INPUT_PROP_DIRECT:
case INPUT_PROP_SEMI_MT:
case INPUT_PROP_TOPBUTTONPAD:
case INPUT_PROP_POINTING_STICK:
case INPUT_PROP_ACCELEROMETER:
break;
case INPUT_PROP_BUTTONPAD:
input_set_capability(dev, EV_KEY, BTN_LEFT);
__clear_bit(BTN_RIGHT, dev->keybit);
__clear_bit(BTN_MIDDLE, dev->keybit);
break;
default:
pr_err("%s: unknown property %u\n", __func__, property);
dump_stack();
return;
}
__set_bit(property, dev->propbit);
}
EXPORT_SYMBOL(input_set_property);
Which approach do you think is the best?
Thank you very much in advance,
Jose
José Expósito (1):
HID: multitouch: only map BTN_LEFT on buttonpads
drivers/hid/hid-multitouch.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--
2.25.1
next reply other threads:[~2021-11-23 19:12 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-23 19:12 José Expósito [this message]
2021-11-23 19:12 ` [PATCH 1/1] HID: multitouch: only map BTN_LEFT " José Expósito
2021-11-24 8:43 ` kernel test robot
2021-11-24 9:39 ` [PATCH 0/1] Do not map BTN_RIGHT/MIDDLE " Benjamin Tissoires
2021-11-24 19:53 ` José Expósito
2021-12-01 5:56 ` Peter Hutterer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211123191238.12472-1-jose.exposito89@gmail.com \
--to=jose.exposito89@gmail.com \
--cc=benjamin.tissoires@redhat.com \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peter.hutterer@who-t.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®