--- xvkbd.c	2006-09-10 07:16:00.000000000 +0200
+++ /usr/src/xvkbd-2.8/xvkbd.c	2007-06-01 09:25:13.000000000 +0200
@@ -1556,6 +1556,7 @@
  * only need to check which mouse button is pressed here.
  */
 static unsigned int n_key_repeat;
+static unsigned int suppress_double;
 
 static void ButtonDownAction(Widget w, XEvent *event, String *pars, Cardinal *n_pars)
 {
@@ -1563,7 +1564,7 @@
 
   switch (event->xbutton.button) {
   case Button2:
-    mouse_shift |= ControlMask;
+//    mouse_shift |= ControlMask;
     break;
   case Button3:
   case Button4:
@@ -1953,6 +1954,12 @@
 
   if (appres.debug) fprintf(stderr, "KeyPressed: key=%s, widget=%lx\n", key, (long)w);
 
+  if (suppress_double)
+  {
+    suppress_double = 0;
+    return;
+  }
+
   value = FindFunctionKeyValue(key, TRUE);
   if (value != NULL) {
     if (appres.debug) fprintf(stderr, "Assigned string: %s\n", value);
@@ -2137,6 +2144,7 @@
       shift_state &= ~altgr_mask;
   }
   RefreshShiftState(FALSE);
+  suppress_double = 1;
 }
 
 /*
@@ -3021,6 +3029,8 @@
   Window child;
   int op, ev, err;
 
+  suppress_double = 1;
+
   argc1 = argc;
   argv1 = malloc(sizeof(char *) * (argc1 + 5));
   memcpy(argv1, argv, sizeof(char *) * argc1);
