Looking at the source code for xserver-xorg-input-mouse it seems that this
behaviour is a gross overreaction to the reception of a spurious z-axis
packet from the mouse.
if (pMse->negativeW != MSE_NOAXISMAP) {
switch (pBuf[3] & 0x0f) {
case 0x00: break;
case 0x01: dz = 1; break;
case 0x02: dw = 1; break;
case 0x0e: dw = -1; break;
case 0x0f: dz = -1; break;
default:
xf86Msg(X_INFO,
"Mouse autoprobe: Disabling secondary wheel\n");
pMse->negativeW = pMse->positiveW = MSE_NOAXISMAP;
}
}
So, if it receives any z-axis data that it does not understand, it does not
simply ignore it, it immediately and for no reason nukes the secondary wheel,
and moreover does this in such a way that it also destroys any wheel remapping,
with the result that it also destroys my vertical wheel. This is very rude.
So I am currently testing the following patch, which simply reports and then
ignores the spurious packet, instead of making my mouse unusable.
diff -u src/mouse.c.orig src/mouse.c
--- src/mouse.c.orig 2007-12-06 14:57:38.000000000 +0000
+++ src/mouse.c 2007-12-06 14:27:08.000000000 +0000
@@ -1511,9 +1511,14 @@
case 0x0e: dw = -1; break;
case 0x0f: dz = -1; break;
default:
+#ifdef notdef
xf86Msg(X_INFO,
"Mouse autoprobe: Disabling secondary wheel\n");
pMse->negativeW = pMse->positiveW = MSE_NOAXISMAP;
+#else
+ xf86Msg(X_INFO,
+ "ExplorerPS/2 decode: unrecognised z-axis packet received\n");
+#endif
}
}
if (pMse->negativeW == MSE_NOAXISMAP)
--
Pigeon
Be kind to pigeons - - Pigeon's Nest: http://pigeonsnest.co.uk/
GPG key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x21C61F7F
Attachment:
signature.asc
Description: Digital signature