--- src/unix/sdl_glimp.c 2006-06-10 12:34:44.000000000 +0200 +++ ../tremulous-1.1.0-src/src/unix/sdl_glimp.c 2006-03-04 00:59:01.000000000 +0100 @@ -184,90 +184,74 @@ *buf = '\0'; - // special scancode override for some keys that do not map correctly on foreign keyboards - switch (keysym->scancode) + // these happen to match the ASCII chars. + if ((keysym->sym >= ' ') && (keysym->sym <= '~')) { - case 49: *key = '~'; break; - case 10: *key = '1'; break; - case 11: *key = '2'; break; - case 12: *key = '3'; break; - case 13: *key = '4'; break; - case 14: *key = '5'; break; - case 15: *key = '6'; break; - case 16: *key = '7'; break; - case 17: *key = '8'; break; - case 18: *key = '9'; break; - case 19: *key = '0'; break; - default: - // these happen to match the ASCII chars. - if ((keysym->sym >= ' ') && (keysym->sym <= '~')) - { - *key = (int) keysym->sym; - } - else - switch (keysym->sym) - { - case SDLK_PAGEUP: *key = K_PGUP; break; - case SDLK_KP9: *key = K_KP_PGUP; break; - case SDLK_PAGEDOWN: *key = K_PGDN; break; - case SDLK_KP3: *key = K_KP_PGDN; break; - case SDLK_KP7: *key = K_KP_HOME; break; - case SDLK_HOME: *key = K_HOME; break; - case SDLK_KP1: *key = K_KP_END; break; - case SDLK_END: *key = K_END; break; - case SDLK_KP4: *key = K_KP_LEFTARROW; break; - case SDLK_LEFT: *key = K_LEFTARROW; break; - case SDLK_KP6: *key = K_KP_RIGHTARROW; break; - case SDLK_RIGHT: *key = K_RIGHTARROW; break; - case SDLK_KP2: *key = K_KP_DOWNARROW; break; - case SDLK_DOWN: *key = K_DOWNARROW; break; - case SDLK_KP8: *key = K_KP_UPARROW; break; - case SDLK_UP: *key = K_UPARROW; break; - case SDLK_ESCAPE: *key = K_ESCAPE; break; - case SDLK_KP_ENTER: *key = K_KP_ENTER; break; - case SDLK_RETURN: *key = K_ENTER; break; - case SDLK_TAB: *key = K_TAB; break; - case SDLK_F1: *key = K_F1; break; - case SDLK_F2: *key = K_F2; break; - case SDLK_F3: *key = K_F3; break; - case SDLK_F4: *key = K_F4; break; - case SDLK_F5: *key = K_F5; break; - case SDLK_F6: *key = K_F6; break; - case SDLK_F7: *key = K_F7; break; - case SDLK_F8: *key = K_F8; break; - case SDLK_F9: *key = K_F9; break; - case SDLK_F10: *key = K_F10; break; - case SDLK_F11: *key = K_F11; break; - case SDLK_F12: *key = K_F12; break; - - // bk001206 - from Ryan's Fakk2 - case SDLK_BACKSPACE: *key = K_BACKSPACE; break; // ctrl-h - case SDLK_KP_PERIOD: *key = K_KP_DEL; break; - case SDLK_DELETE: *key = K_DEL; break; - case SDLK_PAUSE: *key = K_PAUSE; break; - - case SDLK_LSHIFT: - case SDLK_RSHIFT: *key = K_SHIFT; break; - - case SDLK_LCTRL: - case SDLK_RCTRL: *key = K_CTRL; break; - - case SDLK_RMETA: - case SDLK_LMETA: - case SDLK_RALT: - case SDLK_LALT: *key = K_ALT; break; - - case SDLK_KP5: *key = K_KP_5; break; - case SDLK_INSERT: *key = K_INS; break; - case SDLK_KP0: *key = K_KP_INS; break; - case SDLK_KP_MULTIPLY: *key = K_KP_STAR; break; - case SDLK_KP_PLUS: *key = K_KP_PLUS; break; - case SDLK_KP_MINUS: *key = K_KP_MINUS; break; - case SDLK_KP_DIVIDE: *key = K_KP_SLASH; break; - - default: break; - } + *key = (int) keysym->sym; } + else + switch (keysym->sym) + { + case SDLK_PAGEUP: *key = K_PGUP; break; + case SDLK_KP9: *key = K_KP_PGUP; break; + case SDLK_PAGEDOWN: *key = K_PGDN; break; + case SDLK_KP3: *key = K_KP_PGDN; break; + case SDLK_KP7: *key = K_KP_HOME; break; + case SDLK_HOME: *key = K_HOME; break; + case SDLK_KP1: *key = K_KP_END; break; + case SDLK_END: *key = K_END; break; + case SDLK_KP4: *key = K_KP_LEFTARROW; break; + case SDLK_LEFT: *key = K_LEFTARROW; break; + case SDLK_KP6: *key = K_KP_RIGHTARROW; break; + case SDLK_RIGHT: *key = K_RIGHTARROW; break; + case SDLK_KP2: *key = K_KP_DOWNARROW; break; + case SDLK_DOWN: *key = K_DOWNARROW; break; + case SDLK_KP8: *key = K_KP_UPARROW; break; + case SDLK_UP: *key = K_UPARROW; break; + case SDLK_ESCAPE: *key = K_ESCAPE; break; + case SDLK_KP_ENTER: *key = K_KP_ENTER; break; + case SDLK_RETURN: *key = K_ENTER; break; + case SDLK_TAB: *key = K_TAB; break; + case SDLK_F1: *key = K_F1; break; + case SDLK_F2: *key = K_F2; break; + case SDLK_F3: *key = K_F3; break; + case SDLK_F4: *key = K_F4; break; + case SDLK_F5: *key = K_F5; break; + case SDLK_F6: *key = K_F6; break; + case SDLK_F7: *key = K_F7; break; + case SDLK_F8: *key = K_F8; break; + case SDLK_F9: *key = K_F9; break; + case SDLK_F10: *key = K_F10; break; + case SDLK_F11: *key = K_F11; break; + case SDLK_F12: *key = K_F12; break; + + // bk001206 - from Ryan's Fakk2 + case SDLK_BACKSPACE: *key = K_BACKSPACE; break; // ctrl-h + case SDLK_KP_PERIOD: *key = K_KP_DEL; break; + case SDLK_DELETE: *key = K_DEL; break; + case SDLK_PAUSE: *key = K_PAUSE; break; + + case SDLK_LSHIFT: + case SDLK_RSHIFT: *key = K_SHIFT; break; + + case SDLK_LCTRL: + case SDLK_RCTRL: *key = K_CTRL; break; + + case SDLK_RMETA: + case SDLK_LMETA: + case SDLK_RALT: + case SDLK_LALT: *key = K_ALT; break; + + case SDLK_KP5: *key = K_KP_5; break; + case SDLK_INSERT: *key = K_INS; break; + case SDLK_KP0: *key = K_KP_INS; break; + case SDLK_KP_MULTIPLY: *key = '*'; break; + case SDLK_KP_PLUS: *key = K_KP_PLUS; break; + case SDLK_KP_MINUS: *key = K_KP_MINUS; break; + case SDLK_KP_DIVIDE: *key = K_KP_SLASH; break; + + default: break; + } if( keysym->unicode <= 127 ) // maps to ASCII? {