summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <jeremyhu@freedesktop.org>2009-11-04 16:18:06 -0800
committerJeremy Huddleston <jeremyhu@freedesktop.org>2009-11-05 11:08:42 -0800
commit83faccd1ece2d51617c6a5b286f0bf869af71562 (patch)
treef28167eb6cb7cc55ace9a200e71b8279f8996e5d
parent2fdee6817a76189426bf69c4e7dedb18aec029dd (diff)
XQuartz: Don't weed out duplicates in generated keymap
There seems to be an issue in the 1.5+ server where shift-space does not produce a space when 'keycode 57 = space' but it does when 'keycode 57 = space space' Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org> (cherry picked from commit 7f919e0c0eae51a81ed5ec502a02cc8c324aafe9)
-rw-r--r--hw/xquartz/quartzKeyboard.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index 0eb0623cf..1b54014d0 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -400,6 +400,7 @@ void DarwinKeyboardReloadHandler(void) {
keySyms.minKeyCode = MIN_KEYCODE;
keySyms.maxKeyCode = MAX_KEYCODE;
+ // TODO: We should build the entire XkbDescRec and use XkbCopyKeymap
/* Apply the mappings to darwinKeyboard */
SetKeySymsMap(&darwinKeyboard->key->curKeySyms, &keySyms);
memcpy(darwinKeyboard->key->modifierMap, keyInfo.modMap, sizeof(keyInfo.modMap));
@@ -785,9 +786,12 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
#endif
}
- if (k[3] == k[2]) k[3] = NoSymbol;
- if (k[1] == k[0]) k[1] = NoSymbol;
- if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol;
+ // There seems to be an issue with this in 1.5+, shift-space is not
+ // producing space, it's sending NoSymbol... ?
+ //if (k[3] == k[2]) k[3] = NoSymbol;
+ //if (k[1] == k[0]) k[1] = NoSymbol;
+ //if (k[0] == k[2] && k[1] == k[3]) k[2] = k[3] = NoSymbol;
+ //if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) k[3] = NoSymbol;
}
/* Fix up some things that are normally missing.. */
@@ -798,7 +802,7 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
if (k[0] == NoSymbol && k[1] == NoSymbol
&& k[2] == NoSymbol && k[3] == NoSymbol)
- k[0] = known_keys[i].keysym;
+ k[0] = k[1] = k[2] = k[3] = known_keys[i].keysym;
}
}
@@ -811,7 +815,7 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
k = info->keyMap + known_numeric_keys[i].keycode * GLYPHS_PER_KEY;
if (k[0] == known_numeric_keys[i].normal)
- k[0] = known_numeric_keys[i].keypad;
+ k[0] = k[1] = k[2] = k[3] = known_numeric_keys[i].keypad;
}
}