XQuartz: Fix Czech keyboard dead-acute
This commit is contained in:
parent
b876e0452e
commit
771df2786b
|
@ -145,6 +145,7 @@ const static struct {
|
||||||
KeySym normal, dead;
|
KeySym normal, dead;
|
||||||
} dead_keys[] = {
|
} dead_keys[] = {
|
||||||
{XK_grave, XK_dead_grave},
|
{XK_grave, XK_dead_grave},
|
||||||
|
{XK_apostrophe, XK_dead_acute}, /* "=" on a Czech keyboard */
|
||||||
{XK_acute, XK_dead_acute},
|
{XK_acute, XK_dead_acute},
|
||||||
{XK_asciicircum, XK_dead_circumflex},
|
{XK_asciicircum, XK_dead_circumflex},
|
||||||
{UKEYSYM (0x2c6), XK_dead_circumflex}, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
|
{UKEYSYM (0x2c6), XK_dead_circumflex}, /* MODIFIER LETTER CIRCUMFLEX ACCENT */
|
||||||
|
@ -652,17 +653,11 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
|
||||||
UniCharCount len;
|
UniCharCount len;
|
||||||
UInt32 dead_key_state = 0, extra_dead = 0;
|
UInt32 dead_key_state = 0, extra_dead = 0;
|
||||||
|
|
||||||
if(((i+MIN_KEYCODE)==32 && j==0) || ((i+MIN_KEYCODE)==22 && j==2))
|
|
||||||
fprintf(stderr, "%s i=%d (mods[j] >> 8) = %ul\n", (i+MIN_KEYCODE) == 22 ? "US" : "Czech", i, mods[j] >> 8);
|
|
||||||
|
|
||||||
err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
|
err = UCKeyTranslate (chr_data, i, kUCKeyActionDown,
|
||||||
mods[j] >> 8, keyboard_type, 0,
|
mods[j] >> 8, keyboard_type, 0,
|
||||||
&dead_key_state, 8, &len, s);
|
&dead_key_state, 8, &len, s);
|
||||||
if (err != noErr) continue;
|
if (err != noErr) continue;
|
||||||
|
|
||||||
if(((i+MIN_KEYCODE)==32 && j==0) || ((i+MIN_KEYCODE)==22 && j==2))
|
|
||||||
fprintf(stderr, "dead_key_state = %d, len=%d s=%d %d %d %d %d %d %d %d\n", dead_key_state, len, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7]);
|
|
||||||
|
|
||||||
if (len == 0 && dead_key_state != 0) {
|
if (len == 0 && dead_key_state != 0) {
|
||||||
/* Found a dead key. Work out which one it is, but
|
/* Found a dead key. Work out which one it is, but
|
||||||
remembering that it's dead. */
|
remembering that it's dead. */
|
||||||
|
@ -670,19 +665,12 @@ Bool QuartzReadSystemKeymap(darwinKeyboardInfo *info) {
|
||||||
mods[j] >> 8, keyboard_type,
|
mods[j] >> 8, keyboard_type,
|
||||||
kUCKeyTranslateNoDeadKeysMask,
|
kUCKeyTranslateNoDeadKeysMask,
|
||||||
&extra_dead, 8, &len, s);
|
&extra_dead, 8, &len, s);
|
||||||
|
|
||||||
if(((i+MIN_KEYCODE)==32 && j==0) || ((i+MIN_KEYCODE)==22 && j==2))
|
|
||||||
fprintf(stderr, "found a dead key... post: extra_dead = %d, len=%d s=%d %d %d %d %d %d %d %d\n", extra_dead, len, s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7]);
|
|
||||||
|
|
||||||
if (err != noErr) continue;
|
if (err != noErr) continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len > 0 && s[0] != 0x0010) {
|
if (len > 0 && s[0] != 0x0010) {
|
||||||
k[j] = ucs2keysym (s[0]);
|
k[j] = ucs2keysym (s[0]);
|
||||||
if (dead_key_state != 0) k[j] = make_dead_key (k[j]);
|
if (dead_key_state != 0) k[j] = make_dead_key (k[j]);
|
||||||
|
|
||||||
if(((i+MIN_KEYCODE)==32 && j==0) || ((i+MIN_KEYCODE)==22 && j==2))
|
|
||||||
fprintf(stderr, "k[j] = %d\n", k[j]);
|
|
||||||
}
|
}
|
||||||
#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
|
#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
|
||||||
} else { // kchr
|
} else { // kchr
|
||||||
|
|
Loading…
Reference in New Issue
Block a user