Why does my wheel-equipped PS/2 mouse cause my mouse cursor to jump around the screen?

The PS/2 mouse driver psm in FreeBSD versions 3.2 or earlier has difficulty with some wheel mice, including Logitech model M-S48 and its OEM siblings. Apply the following patch to /sys/i386/isa/psm.c and rebuild the kernel.

    Index: psm.c
    ===================================================================
    RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v
    retrieving revision 1.60.2.1
    retrieving revision 1.60.2.2
    diff -u -r1.60.2.1 -r1.60.2.2
    --- psm.c        1999/06/03 12:41:13 1.60.2.1
    +++ psm.c        1999/07/12 13:40:52 1.60.2.2
    @@ -959,14 +959,28 @@
         sc->mode.packetsize = vendortype[i].packetsize;
    
         /* set mouse parameters */
    +#if 0
    +    /*
    +     * A version of Logitech FirstMouse+ won't report wheel movement,
    +     * if SET_DEFAULTS is sent...  Don't use this command.
    +     * This fix was found by Takashi Nishida.
    +     */
         i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS);
         if (verbose >= 2)
             printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i);
    +#endif
         if (sc->config & PSM_CONFIG_RESOLUTION) {
             sc->mode.resolution
                 = set_mouse_resolution(sc->kbdc,
    -                (sc->config & PSM_CONFIG_RESOLUTION) - 1);
    +                       (sc->config & PSM_CONFIG_RESOLUTION) - 1);
    +    } else if (sc->mode.resolution >= 0) {
    +        sc->mode.resolution
    +            = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution);
    +    }
    +    if (sc->mode.rate > 0) {
    +        sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate);
         }
    +    set_mouse_scaling(sc->kbdc, 1);
    
         /* request a data packet and extract sync. bits */
         if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) {

Versions later than 3.2 should be all right.



UNIXguide.net
English to Visayan Cebuano Dictionary
Suggest a Site
Visayan Cebuano to English Dictionary