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