Subject: Re: PS/2 Mouse vs. Serial Mouse
To: Todd Vierling <tv@pobox.com>
From: Jim Rees <rees@umich.edu>
List: port-i386
Date: 08/16/1996 14:35:29
Okay, I'm confused. How does a PS/2 mouse relate to a bus mouse?
The NetBSD mouse driver, in its infinite wisdom, translates ps/2 mouse codes
to Busmouse codes. So you might think you have a ps/2 mouse, but you must
tell X you have a Busmouse. See arch/i386/isa/pms.c:pmsintr() for the
translation code. I have no idea why it does this.
I once tried taking out the translation code. This worked fine until XF
3.1.2A came out. It had a bug that inverted the sense of the button bits,
so I went back to the translating driver. It would be nice if the driver
were #ifdefed so you could easily turn it off. It would also be nice if the
man page documented the translation.
Unlike some M$ clone mice, PS/2 mice usually don't have a switch to send
back Mouse Systems codes, and therefore usually only come in two, rather
than three, button varieties.
The ps/2 mouse protocol is three button, and the driver supports this. We
use three-button mice originally intended for rs/6000 and they work fine
with NetBSD.
There is also a bug in the NetBSD 1.1 mouse driver that makes it not work on
some machines (I don't remember which ones). Here's the fix.
% diff -cb pms.c- pms.c
*** pms.c- Fri Oct 13 21:58:55 1995
--- pms.c Wed Mar 27 13:13:00 1996
***************
*** 166,172 ****
if (ia->ia_iobase != 0x60)
return 0;
- pms_dev_cmd(PMS_RESET);
pms_aux_cmd(PMS_AUX_TEST);
delay(1000);
x = inb(PMS_DATA);
--- 166,171 ----
***************
*** 244,250 ****
struct pms_softc *sc = pmscd.cd_devs[PMSUNIT(dev)];
/* Disable interrupts. */
- pms_dev_cmd(PMS_DEV_DISABLE);
pms_pit_cmd(PMS_INT_DISABLE);
pms_aux_cmd(PMS_AUX_DISABLE);
--- 243,248 ----