author | Alan Coopersmith <Alan.Coopersmith@Oracle.COM> |
Thu, 15 Jul 2010 17:25:40 -0700 | |
changeset 981 | 34c4991cc8b6 |
parent 865 | 2830e8bf613b |
permissions | -rw-r--r-- |
981
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
1 |
From c4867c83722795c55b07c0fbcbd22fe8e86b96e7 Mon Sep 17 00:00:00 2001 |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
2 |
From: astrand <astrand@3789f03b-4d11-0410-bbf8-ca57d06f2519> |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
3 |
Date: Wed, 9 Dec 2009 12:28:19 +0000 |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
4 |
Subject: [PATCH] Avoid modifiers such as shift sticking. |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
5 |
|
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
6 |
git-svn-id: https://tigervnc.svn.sourceforge.net/svnroot/tigervnc/trunk@3924 3789f03b-4d11-0410-bbf8-ca57d06f2519 |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
7 |
--- |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
8 |
unix/xserver/hw/vnc/Input.cc | 17 +++++++++++++++++ |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
9 |
1 files changed, 17 insertions(+), 0 deletions(-) |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
10 |
|
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
11 |
diff --git a/unix/xserver/hw/vnc/Input.cc b/unix/xserver/hw/vnc/Input.cc |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
12 |
index 478240c..4ad1564 100644 |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
13 |
--- a/unix/xserver/hw/vnc/Input.cc |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
14 |
+++ b/unix/xserver/hw/vnc/Input.cc |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
15 |
@@ -373,6 +373,14 @@ void KeyboardDevice::keyEvent(rdr::U32 keysym, bool down) |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
16 |
unsigned int i, n; |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
17 |
int j, k, action; |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
18 |
|
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
19 |
+ /* |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
20 |
+ * Since we are checking the current state to determine if we need |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
21 |
+ * to fake modifiers, we must make sure that everything put on the |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
22 |
+ * input queue is processed before we start. Otherwise, shift may be |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
23 |
+ * stuck down. |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
24 |
+ */ |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
25 |
+ mieqProcessInputEvents(); |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
26 |
+ |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
27 |
if (keysym == XK_Caps_Lock) { |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
28 |
vlog.debug("Ignoring caps lock"); |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
29 |
return; |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
30 |
@@ -506,6 +514,15 @@ ModeSwitchFound: |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
31 |
action = down ? KeyPress : KeyRelease; |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
32 |
n = GetKeyboardEvents(eventq, dev, action, kc); |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
33 |
enqueueEvents(dev, n); |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
34 |
+ |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
35 |
+ /* |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
36 |
+ * When faking a modifier we are putting a keycode (which can |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
37 |
+ * currently activate the desired modifier) on the input |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
38 |
+ * queue. A future modmap change can change the mapping so |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
39 |
+ * that this keycode means something else entirely. Guard |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
40 |
+ * against this by processing the queue now. |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
41 |
+ */ |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
42 |
+ mieqProcessInputEvents(); |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
43 |
} |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
44 |
|
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
45 |
static KeySym KeyCodetoKeySym(KeySymsPtr keymap, int keycode, int col) |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
46 |
-- |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
47 |
1.5.6.5 |
34c4991cc8b6
6969277 Upgrade to TigerVNC 1.0.1
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
865
diff
changeset
|
48 |