Input: psmouse - fix button reporting for basic protocols
Subsystems (2)
Dmitry Torokhov
maintainerPATCH 1/1 Input: psmouse - fix button reporting for basic protocols
The commit ba667650c568 ("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 ba667650c568 ("Input: psmouse - clean up code")
Reported-by Jiri Slaby <[email protected]>
Signed-off-by Dmitry Torokhov <[email protected]>
--- drivers/input/mouse/psmouse-base.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/input/mouse/psmouse-base.c +6 -6
@@ -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 ;
Signature · 5 lines
2.18.0.rc2.346.g013aa6912e-goog -- Dmitry