[Bugfix] Handle situation when viewer doesn't send the key release event well.
Happens for example with TightVNC 1.3.10 viewer during following sequence:
"press shift" + "press a" + "release shift" + "release a"
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4237 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/unix/xserver/hw/vnc/Input.cc b/unix/xserver/hw/vnc/Input.cc
index ca9bae3..f36244a 100644
--- a/unix/xserver/hw/vnc/Input.cc
+++ b/unix/xserver/hw/vnc/Input.cc
@@ -781,6 +781,16 @@
}
}
}
+#else
+ /*
+ * If you would like to press a key which is already pressed then
+ * viewer didn't send the "release" event. In this case release it
+ * before the press.
+ */
+ if (IS_PRESSED(keyc, kc) && down) {
+ vlog.debug("KeyRelease for %d wasn't sent, releasing", kc);
+ pressKey(keyboardDev, kc, false, "fixing keycode");
+ }
#endif
if (maxKeysPerMod != 0) {