Message ID | 20161003121630.5285-2-ben@smart-cactus.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index b8454af..7874f4f 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c @@ -1197,7 +1197,12 @@ 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;