Re: KVM & mouse wheel [was PATCH]

From: Marko Macek
Date: Tue Aug 03 2004 - 14:37:58 EST


Dmitry Torokhov wrote:

Hi,

On Tuesday 03 August 2004 10:26 am, Marko Macek wrote:


Hello!

A few months ago I posted about problems with 2.6 kernel, KVM and mouse
wheel.

I was using 2.4 kernel until recently, but with the switch to FC2 with
2.6 kernel this problem became much more annoying.

My mouse is Logitech MX 510.

I figured out a few things.

1. Trying to set the mouse/kvm into a stream mode makes things insane.
Since streaming mode is supposed to be the default, I propose not
doing this at all. I haven't researched this further.

- psmouse_command(psmouse, param, PSMOUSE_CMD_SETSTREAM);



Could you describe what insane mean? If you take the KVM out of the picture
is the mouse still instane?


Insane means that the mouse is moving really slowly, jumping around and buttons
work erratically. I did some more experiments and it seems that if I put this command
before the resolution/rate/scaling setting it seems to do no harm (the mouse works perfectly).
I'd still prefer to remove it since I see no need for it.

2. synaptics_detect hoses imps and exps detection. Resetting the mouse
after failed detect fixes it. This makes 'imps' and 'exps' protocols
work when used as proto=imps or proto=exps. Wheel works, I haven't tried
the buttons.




Again, does it work without the KVM?


Yes, without the KVM the mouse works perfectly.



3. PS2++ detection correctly detects Logitech MX mouse but doesn't
enable the PS2PP protocol, because of unexpected results in this code:

param[0] = param[1] = param[2] = 0;
ps2pp_cmd(psmouse, param, 0x39); /* Magic knock */
ps2pp_cmd(psmouse, param, 0xDB);

if ((param[0] & 0x78) == 0x48 &&
(param[1] & 0xf3) == 0xc2 &&
(param[2] & 0x03) == ((param[1] >> 2) & 3)) {
ps2pp_set_smartscroll(psmouse);
protocol = PSMOUSE_PS2PP;
}

The returned param array in my case is: 08 01 00 or 08 00 00 (hex)
(without KVM: C8 C2 64)

I don't understand what this code is trying to check or why the protocol
is only set conditionally. If I set it unconditionally (swap last 2
lines) the PS2++ protocol now works including detection of all buttons
(I don't really need the buttons, just the wheel).




Apparently your KVM doctors the data stream from the mouse. The driver
tries to play safe and only switches to PS2++ protocol if mouse responds
properly, otherwise there is a chance that it uses PS2++ with mouse that
does not actually support it.



Yeah, that's why I decided to fallback to im/exps modes instead.

I have now also successfuly used the extra mouse buttons with 'exps' protocol.
So only the 'task' button is not supported with my previous patch (because
it requires PS2++ mode).

This is not included in the patch. The alternative solution
is to reset the mouse again and resume probing for imps or exps.




It will be probed for imps/exps if PS2++ fails. Now I suspect that your
particular KVM does not expect any extended probes and gets confused by
them.


I have also seen comments in X sources about needing to reset the mouse after
each unsuccessful probe for best compatibility.

Mark

-
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/