--- src/event-Xt.c +++ src/event-Xt.c 2003-09-02 17:39:09.000000000 +0200 @@ -1249,9 +1249,13 @@ However, "F1" normally does. */ if (modifiers & XEMACS_MOD_SHIFT) { - int Mode_switch_p = *state & xd->ModeMask; - KeySym bot = XLookupKeysym (ev, Mode_switch_p ? 2 : 0); - KeySym top = XLookupKeysym (ev, Mode_switch_p ? 3 : 1); + KeySym top, bot; + XKeyEvent tmpev = *ev; + + tmpev.state = *state & (xd->ModeMask | ~0xff); + XLookupString(&tmpev, NULL, 0, &bot, NULL); + tmpev.state |= ShiftMask; + XLookupString(&tmpev, NULL, 0, &top, NULL); if (top && bot && top != bot) modifiers &= ~XEMACS_MOD_SHIFT; }