open-src/xserver/xvnc/upstream-modkeystick.patch
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--
6969277 Upgrade to TigerVNC 1.0.1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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