On Sunday 15 of November 2009 09:20:36 Dmitry Torokhov wrote: > Hi Andrey, > > On Sat, Nov 14, 2009 at 03:51:10PM +0300, Andrey Borzenkov wrote: > > Kernel 2.6.31.x > > > > dmesg: > > Synaptics Touchpad, model: 1, fw: 6.3, id: 0x1c0b1, caps: > > 0xa04751/0x0 > > > > but /proc/bus/input/devices: > > > > I: Bus=0011 Vendor=0002 Product=0007 Version=01b1 > > N: Name="SynPS/2 Synaptics TouchPad" > > P: Phys=isa0060/serio1/input0 > > S: Sysfs=/devices/platform/i8042/serio1/input/input15 > > U: Uniq= > > H: Handlers=mouse1 event2 > > B: EV=b > > B: KEY=420 70000 0 0 0 0 > > B: ABS=11000003 > > > > So even when capabilities clear say only 2 buttons, driver claims > > there are 3 of them. > > > > The reason most likely is initialization sequence. > > psmouse_switch_protocol() unconditionally sets supported buttons: > > > > input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); > > input_dev->keybit[BIT_WORD(BTN_MOUSE)] = BIT_MASK(BTN_LEFT) > > | BIT_MASK(BTN_MIDDLE) | BIT_MASK(BTN_RIGHT); input_dev->relbit[0] > > = BIT_MASK(REL_X) | BIT_MASK(REL_Y); > > > > before even starting hardware detection and knowing real > > capabilities. Detection for specific hardware won't change it > > (possibly only extend). > > Some of them do. > > > Is it OK to move button bits setting into ps2bare_detect()? This > > seems to agree with comments in psmouse_extensions() as well: > > > > /* > > * Okay, all failed, we have a standard mouse here. The number of > > the buttons > > * is still a question, though. We assume 3. > > */ > > > > All other detection routines seem to be setting those bits already. > > Not all of them but yes, I think we should to this. DOes th patch > below work for you? > Yes (I can test only Synaptics case). Tested-by: Andrey Borzenkov > + input_dev->keybit[BIT_WORD(BTN_MOUSE)] = > + BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_RIGHT); Just curious - is Apple touchpad (as found on MacBook) handled by different driver? Because it has just single button.