mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
Input: psmouse - fix button reporting for basic protocols
The commitba667650c5
("Input: psmouse - clean up code") was pretty brain-dead and broke extra buttons reporting for variety of PS/2 mice: Genius, Thinkmouse and Intellimouse Explorer. We need to actually inspect the data coming from the device when reporting events. Fixes:ba667650c5
("Input: psmouse - clean up code") Reported-by: Jiri Slaby <jslaby@suse.cz> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
dd6bee81c9
commit
03ae3a9caf
@ -192,8 +192,8 @@ psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse)
|
||||
else
|
||||
input_report_rel(dev, REL_WHEEL, -wheel);
|
||||
|
||||
input_report_key(dev, BTN_SIDE, BIT(4));
|
||||
input_report_key(dev, BTN_EXTRA, BIT(5));
|
||||
input_report_key(dev, BTN_SIDE, packet[3] & BIT(4));
|
||||
input_report_key(dev, BTN_EXTRA, packet[3] & BIT(5));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -203,13 +203,13 @@ psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse)
|
||||
input_report_rel(dev, REL_WHEEL, -(s8) packet[3]);
|
||||
|
||||
/* Extra buttons on Genius NewNet 3D */
|
||||
input_report_key(dev, BTN_SIDE, BIT(6));
|
||||
input_report_key(dev, BTN_EXTRA, BIT(7));
|
||||
input_report_key(dev, BTN_SIDE, packet[0] & BIT(6));
|
||||
input_report_key(dev, BTN_EXTRA, packet[0] & BIT(7));
|
||||
break;
|
||||
|
||||
case PSMOUSE_THINKPS:
|
||||
/* Extra button on ThinkingMouse */
|
||||
input_report_key(dev, BTN_EXTRA, BIT(3));
|
||||
input_report_key(dev, BTN_EXTRA, packet[0] & BIT(3));
|
||||
|
||||
/*
|
||||
* Without this bit of weirdness moving up gives wildly
|
||||
@ -223,7 +223,7 @@ psmouse_ret_t psmouse_process_byte(struct psmouse *psmouse)
|
||||
* Cortron PS2 Trackball reports SIDE button in the
|
||||
* 4th bit of the first byte.
|
||||
*/
|
||||
input_report_key(dev, BTN_SIDE, BIT(3));
|
||||
input_report_key(dev, BTN_SIDE, packet[0] & BIT(3));
|
||||
packet[0] |= BIT(3);
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user