| From 6797b39e6f6f34c74177736e146406e894b9482b Mon Sep 17 00:00:00 2001 |
| From: Hans de Goede <hdegoede@redhat.com> |
| Date: Wed, 26 Mar 2014 13:30:52 -0700 |
| Subject: Input: cypress_ps2 - don't report as a button pads |
| |
| From: Hans de Goede <hdegoede@redhat.com> |
| |
| commit 6797b39e6f6f34c74177736e146406e894b9482b upstream. |
| |
| The cypress PS/2 trackpad models supported by the cypress_ps2 driver |
| emulate BTN_RIGHT events in firmware based on the finger position, as part |
| of this no motion events are sent when the finger is in the button area. |
| |
| The INPUT_PROP_BUTTONPAD property is there to indicate to userspace that |
| BTN_RIGHT events should be emulated in userspace, which is not necessary |
| in this case. |
| |
| When INPUT_PROP_BUTTONPAD is advertised userspace will wait for a motion |
| event before propagating the button event higher up the stack, as it needs |
| current abs x + y data for its BTN_RIGHT emulation. Since in the |
| cypress_ps2 pads don't report motion events in the button area, this means |
| that clicks in the button area end up being ignored, so |
| INPUT_PROP_BUTTONPAD actually causes problems for these touchpads, and |
| removing it fixes: |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=76341 |
| |
| Reported-by: Adam Williamson <awilliam@redhat.com> |
| Tested-by: Adam Williamson <awilliam@redhat.com> |
| Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/input/mouse/cypress_ps2.c | 1 - |
| 1 file changed, 1 deletion(-) |
| |
| --- a/drivers/input/mouse/cypress_ps2.c |
| +++ b/drivers/input/mouse/cypress_ps2.c |
| @@ -410,7 +410,6 @@ static int cypress_set_input_params(stru |
| __clear_bit(REL_X, input->relbit); |
| __clear_bit(REL_Y, input->relbit); |
| |
| - __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); |
| __set_bit(EV_KEY, input->evbit); |
| __set_bit(BTN_LEFT, input->keybit); |
| __set_bit(BTN_RIGHT, input->keybit); |