|
@@ -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;
|