diff -Nur gpm-1.19.6/src/mice.c gpm-1.19.6-patched/src/mice.c
--- gpm-1.19.6/src/mice.c	Thu Nov 22 17:53:26 2001
+++ gpm-1.19.6-patched/src/mice.c	Thu Nov 22 18:01:27 2001
@@ -1386,6 +1386,65 @@
 	return 0;
 }
 
+
+/* Support for DEC VSXXX-AA and VSXXX-GA serial mice used on   */
+/* DECstation 5000/xxx, DEC 3000 AXP and VAXstation 4000       */
+/* workstations                                                */
+/* written 2001/07/11 by Karsten Merker (merker@linuxtag.org)  */
+/* modified (completion of the protocol specification and      */
+/* corresponding correction of the protocol identification     */
+/* mask) 2001/07/12 by Maciej W. Rozycki (macro@ds2.pg.gda.pl) */
+
+static int M_vsxxx_aa(Gpm_Event *state, unsigned char *data)
+{
+  state->buttons = data[0]&0x07;
+  state->dx = (data[0]&0x10) ? data[1] : -data[1];
+  state->dy = (data[0]&0x08) ? -data[2] : data[2];
+  return 0;
+
+
+/* Mouse protocol is as follows:
+ * 4800 bits per second, 8 data bits, 1 stop bit, odd parity
+ * 3 data bytes per data packet:
+ *              7     6     5     4     3     2     1     0
+ * First Byte:  1     0     0   SignX SignY  LMB   MMB   RMB
+ * Second Byte  0     DX    DX    DX    DX    DX    DX    DX
+ * Third Byte   0     DY    DY    DY    DY    DY    DY    DY
+ *
+ * SignX:     sign bit for X-movement
+ * SignY:     sign bit for Y-movement
+ * DX and DY: 7-bit-absolute values for delta-X and delta-Y, sign extensions
+ *            are in SignX resp. SignY.
+ *
+ * There are a few commands the mouse accepts:
+ * "D" selects the prompt mode,
+ * "P" requests the mouse's position (also selects the prompt mode),
+ * "R" selects the incremental stream mode,
+ * "T" performs a self test and identification (power-up-like),
+ * "Z" performs undocumented test functions (a byte follows).
+ * Parity as well as bit #7 of commands are ignored by the mouse.
+ *
+ * 4 data bytes per self test packet (useful for hot-plug):
+ *              7     6     5     4     3     2     1     0
+ * First Byte:  1     0     1     0     R3    R2    R1    R0
+ * Second Byte  0     M2    M1    M0    0     0     1     0
+ * Third Byte   0     E6    E5    E4    E3    E2    E1    E0
+ * Fourth Byte  0     0     0     0     0    LMB   MMB   RMB
+ *
+ * R3-R0:     revision,
+ * M2-M0:     manufacturer location code,
+ * E6-E0:     error code:
+ *            0x00-0x1f: no error (fourth byte is button state),
+ *            0x3d:      button error (fourth byte specifies which),
+ *            else:      other error.
+ * 
+ * The mouse powers up in the prompt mode but we use the stream mode.
+ */
+
+}
+
+
+
 /*========================================================================*/
 /* Then, mice should be initialized */
 
@@ -1527,6 +1586,13 @@
       setspeed (fd, 1200, 9600, 1, flags);
     }
 
+  if (type->fun==M_vsxxx_aa) 
+    {
+      setspeed (fd, 4800, 4800, 0, flags); /* no write */
+      write(fd, "R", 1);     /* initialize mouse, without getting an "R" the */
+                             /* mouse does not send a bytestream             */
+    }
+
   return type;
 }
 
@@ -2343,6 +2409,9 @@
   {"brw",  "For the Fellowes Browser - 4 buttons (and a wheel) (dual protocol?).",
            "", M_brw, I_pnp, CS7 | STD_FLG,
                                 {0xc0, 0x40, 0xc0, 0x00}, 4, 1, 0, 0, 0},
+  {"vsxxxaa", "The DEC VSXXX-AA/GA serial mouse on DEC workstations.",
+           "", M_vsxxx_aa, I_serial, CS8 | PARENB | PARODD | STD_FLG,
+                                {0xe0, 0x80, 0x80, 0x00}, 3, 1, 0, 0, 0},
 
 #ifdef HAVE_LINUX_JOYSTICK_H
   {"js",   "For \"Joystick\" mouse emulation.",
