aboutsummaryrefslogtreecommitdiffstats
path: root/unix/xserver/hw
diff options
context:
space:
mode:
Diffstat (limited to 'unix/xserver/hw')
-rw-r--r--unix/xserver/hw/vnc/Input.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/unix/xserver/hw/vnc/Input.cc b/unix/xserver/hw/vnc/Input.cc
index ca9bae3e..f36244a4 100644
--- a/unix/xserver/hw/vnc/Input.cc
+++ b/unix/xserver/hw/vnc/Input.cc
@@ -781,6 +781,16 @@ ModeSwitchFound:
}
}
}
+#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) {