From 49c2d82dcb0d521c9b8c1605d94deea53e6617d5 Mon Sep 17 00:00:00 2001 From: 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.1