[patch 21/24] psmouse: wheel mice always have middle button

From: Dmitry Torokhov
Date: Mon Jul 25 2005 - 01:57:10 EST

From: Vojtech Pavlik <vojtech@xxxxxxx>

Input: psmouse - wheel mice (imps, exps) always have 3rd button

There are wheel mice that respond to Logitech probes and report
that they have only 2 buttons (such as e-Aser mouse) and this
stops the wheel from being used as a middle button. Change the
driver to always report BTN_MIDDLE capability if a wheel is

Also, never reset BTN_RIGHT capability in logips2pp code - there
are no Logitech mice that have only one button and if some other
mice happen to respond to Logitech's query we could do the wrong

Signed-off-by: Vojtech Pavlik <vojtech@xxxxxxx>
Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx>

drivers/input/mouse/logips2pp.c | 2 --
drivers/input/mouse/psmouse-base.c | 2 ++
2 files changed, 2 insertions(+), 2 deletions(-)

Index: work/drivers/input/mouse/logips2pp.c
--- work.orig/drivers/input/mouse/logips2pp.c
+++ work/drivers/input/mouse/logips2pp.c
@@ -385,8 +385,6 @@ int ps2pp_init(struct psmouse *psmouse,

if (buttons < 3)
clear_bit(BTN_MIDDLE, psmouse->dev.keybit);
- if (buttons < 2)
- clear_bit(BTN_RIGHT, psmouse->dev.keybit);

if (model_info)
ps2pp_set_model_properties(psmouse, model_info, use_ps2pp);
Index: work/drivers/input/mouse/psmouse-base.c
--- work.orig/drivers/input/mouse/psmouse-base.c
+++ work/drivers/input/mouse/psmouse-base.c
@@ -344,6 +344,7 @@ static int intellimouse_detect(struct ps
return -1;

if (set_properties) {
+ set_bit(BTN_MIDDLE, psmouse->dev.keybit);
set_bit(REL_WHEEL, psmouse->dev.relbit);

if (!psmouse->vendor) psmouse->vendor = "Generic";
@@ -376,6 +377,7 @@ static int im_explorer_detect(struct psm
return -1;

if (set_properties) {
+ set_bit(BTN_MIDDLE, psmouse->dev.keybit);
set_bit(REL_WHEEL, psmouse->dev.relbit);
set_bit(BTN_SIDE, psmouse->dev.keybit);
set_bit(BTN_EXTRA, psmouse->dev.keybit);

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/