Skip to content

Commit 9a54cf4

Browse files
Masaki OtaJiri Kosina
authored andcommitted
HID: alps: fix multitouch cursor issue
Issue reproduction procedure: 1. three or more fingers put on Touchpad. 2. release fingers from Touchpad. 3. move the cursor by one finger. 4. the cursor does not move. Cause: We do not notify multi fingers state correctly to input subsystem. For example, when three fingers release from Touchpad, fingers state is 3 -> 0. It needs to notify first, second and third finger's releasing state. Fix this by not breaking out on z axis and move x,y,z input handling code to the correct place so that it's in fact per-finger. [[email protected]: reword changelog] Signed-off-by: Masaki Ota <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent 884316d commit 9a54cf4

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

drivers/hid/hid-alps.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -190,16 +190,16 @@ static int alps_raw_event(struct hid_device *hdev,
190190
if (z != 0) {
191191
input_mt_report_slot_state(hdata->input,
192192
MT_TOOL_FINGER, 1);
193+
input_report_abs(hdata->input,
194+
ABS_MT_POSITION_X, x);
195+
input_report_abs(hdata->input,
196+
ABS_MT_POSITION_Y, y);
197+
input_report_abs(hdata->input,
198+
ABS_MT_PRESSURE, z);
193199
} else {
194200
input_mt_report_slot_state(hdata->input,
195201
MT_TOOL_FINGER, 0);
196-
break;
197202
}
198-
199-
input_report_abs(hdata->input, ABS_MT_POSITION_X, x);
200-
input_report_abs(hdata->input, ABS_MT_POSITION_Y, y);
201-
input_report_abs(hdata->input, ABS_MT_PRESSURE, z);
202-
203203
}
204204

205205
input_mt_sync_frame(hdata->input);

0 commit comments

Comments
 (0)