Input: ALPS - handle 0-pressure 1F events
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: Pali Rohár <pali.rohar@gmail.com> Tested-by: Michal Hocko <mhocko@suse.com> Signed-off-by: Ben Gamari <ben@smart-cactus.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
4777ac220c
commit
a831776323
@ -1198,7 +1198,13 @@ static int alps_decode_ss4_v2(struct alps_fields *f,
|
||||
f->mt[0].x = SS4_1F_X_V2(p);
|
||||
f->mt[0].y = SS4_1F_Y_V2(p);
|
||||
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->is_mp = 0;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user