]> source.dussan.org Git - tigervnc.git/commitdiff
[Bugfix] Disable server-side key autorepeating.
authorAdam Tkac <atkac@redhat.com>
Mon, 17 Jan 2011 10:45:46 +0000 (10:45 +0000)
committerAdam Tkac <atkac@redhat.com>
Mon, 17 Jan 2011 10:45:46 +0000 (10:45 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4235 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/xserver/hw/vnc/Input.cc

index 87151d9b603fb190b7f4d3f80b4e2bd622b5312c..dd1cfb86685301909f8eb4fe550087a4e41225d4 100644 (file)
@@ -533,6 +533,9 @@ void InputDevice::keyEvent(rdr::U32 keysym, bool down)
        int mapWidth;
        unsigned int i;
        int j, k, state, maxKeysPerMod;
+#if XORG >= 17
+       KeybdCtrl ctrl;
+#endif
 
        initInputDevice();
 
@@ -582,6 +585,18 @@ void InputDevice::keyEvent(rdr::U32 keysym, bool down)
        maxKeyCode = keymap->maxKeyCode;
        mapWidth = keymap->mapWidth;
 
+#if XORG >= 17
+       /*
+        * No server-side key repeating, please. Some clients won't work well,
+        * check https://bugzilla.redhat.com/show_bug.cgi?id=607866.
+        */
+       ctrl = keyboardDev->kbdfeed->ctrl;
+       if (ctrl.autoRepeat != FALSE) {
+               ctrl.autoRepeat = FALSE;
+               XkbSetRepeatKeys(keyboardDev, -1, ctrl.autoRepeat);
+       }
+#endif
+
        /* find which modifier Mode_switch is on. */
        int modeSwitchMapIndex = 0;
        for (i = 3; i < 8; i++) {