Skip to content

Commit

Permalink
Input: psmouse - fix button reporting for basic protocols
Browse files Browse the repository at this point in the history
The commit ba66765 ("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: ba66765 ("Input: psmouse - clean up code")
Reported-by: Jiri Slaby <[email protected]>
Cc: [email protected]
Signed-off-by: Dmitry Torokhov <[email protected]>
  • Loading branch information
dtor committed Jun 26, 2018
1 parent dd6bee8 commit 03ae3a9
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions drivers/input/mouse/psmouse-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand All @@ -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;

Expand Down

0 comments on commit 03ae3a9

Please sign in to comment.