From 49c2d82dcb0d521c9b8c1605d94deea53e6617d5 Mon Sep 17 00:00:00 2001
From: dscho <dscho>
Date: Wed, 25 Dec 2002 16:02:49 +0000
Subject: strange, but standard X11 behaviour from Sun keymappings...

---
 contrib/x11vnc.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/contrib/x11vnc.c b/contrib/x11vnc.c
index 4696126..ed7689f 100644
--- a/contrib/x11vnc.c
+++ b/contrib/x11vnc.c
@@ -238,6 +238,25 @@ void initialize_keycodes() {
 	keymap = XGetKeyboardMapping(dpy, minkey, (maxkey - minkey + 1),
 	    &syms_per_keycode);
 
+	/* handle alphabetic char with only one keysym (no upper + lower) */
+	for (i = minkey; i <= maxkey; i++) {
+		X_KeySym lower, upper;
+		/* 2nd one */
+		key = keymap[(i - minkey) * syms_per_keycode + 1];
+		if (key != NoSymbol) {
+			continue;
+		}
+		/* 1st one */
+		key = keymap[(i - minkey) * syms_per_keycode + 0];
+		if (key == NoSymbol) {
+			continue;
+		}
+		XConvertCase(key, &lower, &upper);
+		if (lower != upper) {
+			keymap[(i - minkey) * syms_per_keycode + 0] = lower;
+			keymap[(i - minkey) * syms_per_keycode + 1] = upper;
+		}
+	}
 	for (i = minkey; i <= maxkey; i++) {
 		for (j = 0; j < syms_per_keycode; j++) {
 			key = keymap[ (i - minkey) * syms_per_keycode + j ];
-- 
cgit v1.2.3

