Commit 02645a42 authored by Ben Gamari's avatar Ben Gamari Committed by Brad Figg

Input: ALPS - handle 0-pressure 1F events

BugLink: http://bugs.launchpad.net/bugs/1571530

While a button is held SS5 hardware will give us single-finger packets
with x, y, and pressure equal to zero. This causes annoying jumps in
pointer position if a touch is released while the button is held. Handle
this by claiming zero contacts to ensure that no position events are
provided to the user.
Reviewed-by: default avatarPali Rohár <pali.rohar@gmail.com>
Tested-by: default avatarMichal Hocko <mhocko@suse.com>
Signed-off-by: default avatarBen Gamari <ben@smart-cactus.org>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
(cherry picked from commit a8317763)
Signed-off-by: default avatarPhidias Chiang <phidias.chiang@canonical.com>
Acked-by: default avatarTim Gardner <tim.gardner@canonical.com>
Acked-by: default avatarSeth Forshee <seth.forshee@canonical.com>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 89e46862
...@@ -1197,7 +1197,13 @@ static int alps_decode_ss4_v2(struct alps_fields *f, ...@@ -1197,7 +1197,13 @@ static int alps_decode_ss4_v2(struct alps_fields *f,
f->mt[0].x = SS4_1F_X_V2(p); f->mt[0].x = SS4_1F_X_V2(p);
f->mt[0].y = SS4_1F_Y_V2(p); f->mt[0].y = SS4_1F_Y_V2(p);
f->pressure = ((SS4_1F_Z_V2(p)) * 2) & 0x7f; f->pressure = ((SS4_1F_Z_V2(p)) * 2) & 0x7f;
f->fingers = 1; /*
* When a button is held the device will give us events
* with x, y, and pressure of 0. This causes annoying jumps
* if a touch is released while the button is held.
* Handle this by claiming zero contacts.
*/
f->fingers = f->pressure > 0 ? 1 : 0;
f->first_mp = 0; f->first_mp = 0;
f->is_mp = 0; f->is_mp = 0;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment