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/gpm.c gpm-1.19.5/src/gpm.c
--- gpm-1.19.5.orig/src/gpm.c	Thu Oct  4 23:32:33 2001
+++ gpm-1.19.5/src/gpm.c	Thu Oct  4 23:32:26 2001
@@ -79,6 +79,7 @@
 int opt_ptrdrag=DEF_PTRDRAG;
 int opt_kill=0;
 int opt_repeater=0, opt_double=0;
+int opt_force_repeat = 0;
 char* opt_repeater_type = 0;
 int opt_aged = 0;
 char *opt_special=NULL; /* special commands, like reboot or such */
@@ -379,7 +380,8 @@
       do
 	{
 	j=read(fd,edata-i,i); /* edata is pointer just after data */
-	if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep && j > 0)
+	if ((kd_mode!=KD_TEXT || opt_force_repeat)
+	    && fifofd != -1 && opt_rawrep && j > 0)
 	  write(fifofd, edata-i, j);
 	i-=j;
 	}
@@ -499,7 +501,7 @@
 
 /*....................................... we're a repeater, aren't we? */
 
-  if (kd_mode!=KD_TEXT)
+  if ((kd_mode!=KD_TEXT) || opt_force_repeat)
     {
     if (fifofd != -1 && ! opt_rawrep)
       {
@@ -1127,17 +1129,16 @@
      * but actually it only matters if you have events.
      */
     {
-    int fd = open_console(O_RDONLY);
-    if (ioctl(fd, KDGETMODE, &kd_mode)<0)
-      oops("ioctl(KDGETMODE)");
-    close(fd);
-    if (kd_mode != KD_TEXT && !opt_repeater)
-      {
-      wait_text(&mouse_table[1].fd);
-      maxfd=max(maxfd,mouse_table[1].fd);
-      readySet=connSet;
-      FD_SET(mouse_table[1].fd,&readySet);
-      continue; /* reselect */
+      int fd = open_console(O_RDONLY);
+      if (ioctl(fd, KDGETMODE, &kd_mode)<0)
+	oops("ioctl(KDGETMODE)");
+      close(fd);
+      if (kd_mode != KD_TEXT && !opt_repeater && !opt_force_repeat) {
+	wait_text(&mouse_table[1].fd);
+	maxfd=max(maxfd,mouse_table[1].fd);
+	readySet=connSet;
+	FD_SET(mouse_table[1].fd,&readySet);
+	continue; /* reselect */
       }
     }
 /*....................................... got mouse, process event */
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/gpn.c gpm-1.19.5/src/gpn.c
--- gpm-1.19.5.orig/src/gpn.c	Thu Oct  4 23:32:33 2001
+++ gpm-1.19.5/src/gpn.c	Thu Oct  4 23:32:26 2001
@@ -172,6 +172,7 @@
          "    -R mouse-type    enter repeater mode. X should read /dev/gpmdata\n"
          "                     like it was a mouse-type device.  Default is MouseSystems.\n"
          "                     You can also specify \"raw\" to relay the raw device data.\n"
+	 "    -F               Force always in repeat mode..\n"
          "    -s sample-rate   sets the sample rate (default %d)\n"
          "    -S [commands]    enable special commands (see man page)\n"
          "    -t mouse-type    sets mouse type (default '%s')\n"
@@ -291,7 +292,7 @@
 int 
 cmdline(int argc, char **argv)
 {
-  char options[]="a:A::b:B:d:Dg:hi:kl:m:Mo:pr:R::s:S:t:TveV::23";
+  char options[]="a:A::b:B:d:Dg:hi:kl:m:Mo:pr:FR::s:S:t:TveV::23";
   int i, opt;
   static struct {char *in; char *out;} seq[] = {
     {"123","01234567"},
@@ -356,6 +357,12 @@
             opt_repeater_type = "msc";
           } /*if*/
           break;
+	case 'F':
+	  opt_force_repeat = 1;
+	  opt_repeater++;
+	  if (0 == opt_repeater_type)
+	    opt_repeater_type = "msc";
+	  break;
         case 's': opt_sample = atoi(optarg); break;
         case 'S':
           if (optarg) opt_special=optarg;
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/headers/gpmInt.h gpm-1.19.5/src/headers/gpmInt.h
--- gpm-1.19.5.orig/src/headers/gpmInt.h	Thu Sep 20 16:56:25 2001
+++ gpm-1.19.5/src/headers/gpmInt.h	Thu Oct  4 23:32:26 2001
@@ -171,6 +171,7 @@
 extern int opt_test, opt_ptrdrag;
 extern int opt_kill;
 extern int opt_repeater, opt_double;
+extern int opt_force_repeat;
 extern char* opt_repeater_type;
 extern int opt_kernel, opt_explicittype;
 extern int opt_aged;
