--- a/open-src/xserver/xvnc/Makefile Thu Dec 17 15:04:42 2009 -0800
+++ b/open-src/xserver/xvnc/Makefile Thu Dec 17 15:35:07 2009 -0800
@@ -32,7 +32,7 @@
# or other dealings in this Software without prior written authorization
# of the copyright holder.
#
-# ident "@(#)Makefile 1.22 09/12/05 SMI"
+# ident "@(#)Makefile 1.23 09/12/17 SMI"
#
# Package name used in tarballs
@@ -67,6 +67,7 @@
vnc-nobuildtime.patch \
vnc-nohttpd.patch \
vncviewer-connect.patch,-p1 \
+ upstream-modkeystick.patch,-p0 \
solaris-port.patch
# Man pages to apply Sun footer to & attributes to list
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/upstream-modkeystick.patch Thu Dec 17 15:35:07 2009 -0800
@@ -0,0 +1,37 @@
+--- /dev/null 2009-12-17 01:29:23.000000000 -0800
++++ upstream-modkeystick.patch 2009-12-17 01:28:12.531376950 -0800
+@@ -0,0 +1,34 @@
++open-src/xserver/xvnc/build_32/tigervnc-1.0.0
++--- unix/xserver/hw/vnc/Input.cc.orig 2009-12-16 17:23:13.298295400 -0800
+++++ unix/xserver/hw/vnc/Input.cc 2009-12-16 17:14:56.292383650 -0800
++@@ -456,6 +456,14 @@
++ unsigned int i, n;
++ int j, k, action;
++
+++ /*
+++ * Since we are checking the current state to determine if we need
+++ * to fake modifiers, we must make sure that everything put on the
+++ * input queue is processed before we start. Otherwise, shift may be
+++ * stuck down.
+++ */
+++ mieqProcessInputEvents();
+++
++ if (keysym == XK_Caps_Lock) {
++ vlog.debug("Ignoring caps lock");
++ goto cleanup;
++@@ -617,6 +625,15 @@
++ xfree(keymap);
++ }
++ #endif
+++
+++ /*
+++ * When faking a modifier we are putting a keycode (which can
+++ * currently activate the desired modifier) on the input
+++ * queue. A future modmap change can change the mapping so
+++ * that this keycode means something else entirely. Guard
+++ * against this by processing the queue now.
+++ */
+++ mieqProcessInputEvents();
++ }
++
++ static KeySym KeyCodetoKeySym(KeySymsPtr keymap, int keycode, int col)