--- libsdl1.2-1.2.8/src/video/x11/SDL_x11events.c 2007-09-12 15:14:44.000000000 +0200 +++ ../libsdl1.2-1.2.8/src/video/x11/SDL_x11events.c 2008-01-27 01:07:31.000000000 +0100 @@ -628,7 +628,12 @@ /* Get the raw keyboard scancode */ keysym->scancode = kc; - xsym = XKeycodeToKeysym(display, kc, 0); + if ( SDL_GetModState() & KMOD_MODE ) { + xsym = XKeycodeToKeysym(display, kc, 2); + } + else { + xsym = XKeycodeToKeysym(display, kc, 0); + } #ifdef DEBUG_KEYS fprintf(stderr, "Translating key 0x%.4x (%d)\n", xsym, kc); #endif