Commit 49c2d82d authored by dscho's avatar dscho

strange, but standard X11 behaviour from Sun keymappings...

parent ba2029e9
...@@ -238,6 +238,25 @@ void initialize_keycodes() { ...@@ -238,6 +238,25 @@ void initialize_keycodes() {
keymap = XGetKeyboardMapping(dpy, minkey, (maxkey - minkey + 1), keymap = XGetKeyboardMapping(dpy, minkey, (maxkey - minkey + 1),
&syms_per_keycode); &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 (i = minkey; i <= maxkey; i++) {
for (j = 0; j < syms_per_keycode; j++) { for (j = 0; j < syms_per_keycode; j++) {
key = keymap[ (i - minkey) * syms_per_keycode + j ]; key = keymap[ (i - minkey) * syms_per_keycode + j ];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment