diff -ruN -x Makefile -x configure -x config.cache -x config.h -x *.[178] -x gpm.info -x gpmdoc.ps -x gpmdoc.txt -x gpm-root.c -x stamp-h -x *.elc gpm-1.19.5.orig/src/mice.c gpm-1.19.5/src/mice.c --- gpm-1.19.5.orig/src/mice.c Thu Oct 4 23:40:48 2001 +++ gpm-1.19.5/src/mice.c Thu Oct 4 23:40:34 2001 @@ -1837,6 +1837,29 @@ #endif } +/* PS/2 Init */ +static Gpm_Type *I_fuimps2(int fd, unsigned short flags, + struct Gpm_Type *type, int argc, char **argv) +{ + // cmd is used by the write_ps2* macros. + unsigned char cmd[15]; + int tmp, error = 0; + + if (check_no_argv(argc, argv)) return NULL; + + // Magic to enable the IMPS/2 protocol. + error += write_ps2 (fd, GPM_AUX_SET_SAMPLE, 200, 2, -1); + error += write_ps2 (fd, GPM_AUX_SET_SAMPLE, 100, 2, -1); + error += write_ps2 (fd, GPM_AUX_SET_SAMPLE, 80, 2, -1); + if (error) { + gpm_debug_log(LOG_ERR, "fuimps2: PS/2 mouse failed (3 button) init"); + return(NULL); + } + + return type; +} + + /* * This works with Dexxa Optical Mouse, but because in X same initstring * is named ExplorerPS/2 so I named it in the same way. @@ -2197,6 +2220,9 @@ {"bm", "For some busmice, including Microsoft and Logitech busmice.", "BusMouse", M_bm, I_empty, STD_FLG, /* bm is sun */ {0xf8, 0x80, 0x00, 0x00}, 3, 3, 0, 0, 0}, + {"fups2","For BROKEN PS/2 mice (round with 6 metal pins).", + "PS/2", M_ps2, I_empty, STD_FLG, + {0xc0, 0xc0, 0x00, 0x00}, 3, 1, 0, 0, 0}, {"ps2", "For most busmice connected to a PS/2 port (round with 6 metal\n" " pins).", "PS/2", M_ps2, I_ps2, STD_FLG, @@ -2222,6 +2248,10 @@ " connector with 6 pins), 3 buttons (wheel is repeated).", "", M_imps2, I_ps2, STD_FLG, {0x08, 0x08, 0x00, 0x00}, 4, 1, 0, 0, 0}, + {"fuimps2","For BROKEN wheel mice on a PS/2 port\n" + "(round connector with 6 pins), 3 buttons (wheel is repeated).", + "", M_imps2, I_fuimps2, STD_FLG, + {0xc0, 0xc0, 0x00, 0x00}, 4, 1, 0, 0, 0}, {"exps2", "IntelliMouse Explorer (ps2) - 3 buttons, wheel unused", "ExplorerPS/2", M_ps2, I_ps2, STD_FLG, {0x08, 0x08, 0x00, 0x00}, 4, 1, 0, 0, 0},