Input: lifebook - don't send incomplete events
When we get a relative packet from trackpoint (when we deal with touchscreen/trackpoint combo) we should not send events for the device corresponding to touchscreen as it confuses evtouch driver (it looks like it keeps previously reported absolute coordinates and the cursor stays in the same place). Reported-by: Marcin Drewka <laimoriel@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
af27a69aab
commit
9b771ac442
1 changed files with 13 additions and 12 deletions
|
@ -159,21 +159,22 @@ static psmouse_ret_t lifebook_process_byte(struct psmouse *psmouse)
|
|||
if (!dev2)
|
||||
printk(KERN_WARNING "lifebook.c: got relative packet "
|
||||
"but no relative device set up\n");
|
||||
} else if (lifebook_use_6byte_proto) {
|
||||
input_report_abs(dev1, ABS_X,
|
||||
((packet[1] & 0x3f) << 6) | (packet[2] & 0x3f));
|
||||
input_report_abs(dev1, ABS_Y,
|
||||
4096 - (((packet[4] & 0x3f) << 6) | (packet[5] & 0x3f)));
|
||||
} else {
|
||||
input_report_abs(dev1, ABS_X,
|
||||
(packet[1] | ((packet[0] & 0x30) << 4)));
|
||||
input_report_abs(dev1, ABS_Y,
|
||||
1024 - (packet[2] | ((packet[0] & 0xC0) << 2)));
|
||||
if (lifebook_use_6byte_proto) {
|
||||
input_report_abs(dev1, ABS_X,
|
||||
((packet[1] & 0x3f) << 6) | (packet[2] & 0x3f));
|
||||
input_report_abs(dev1, ABS_Y,
|
||||
4096 - (((packet[4] & 0x3f) << 6) | (packet[5] & 0x3f)));
|
||||
} else {
|
||||
input_report_abs(dev1, ABS_X,
|
||||
(packet[1] | ((packet[0] & 0x30) << 4)));
|
||||
input_report_abs(dev1, ABS_Y,
|
||||
1024 - (packet[2] | ((packet[0] & 0xC0) << 2)));
|
||||
}
|
||||
input_report_key(dev1, BTN_TOUCH, packet[0] & 0x04);
|
||||
input_sync(dev1);
|
||||
}
|
||||
|
||||
input_report_key(dev1, BTN_TOUCH, packet[0] & 0x04);
|
||||
input_sync(dev1);
|
||||
|
||||
if (dev2) {
|
||||
if (relative_packet) {
|
||||
input_report_rel(dev2, REL_X,
|
||||
|
|
Loading…
Add table
Reference in a new issue