X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Facesskernel_src%2Fui_sdl.c;h=25f2964ea7ef1d1b18027fc15152613091b5f580;hb=4e9f0fb47bf1be7303d95a243101880221c82ac1;hp=520ac0091dd23f74a654a8589d7a99889bb47a28;hpb=6d32a3c22e659994d7ae6164ba3722ab12d11421;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/ui_sdl.c b/AcessNative/acesskernel_src/ui_sdl.c index 520ac009..25f2964e 100644 --- a/AcessNative/acesskernel_src/ui_sdl.c +++ b/AcessNative/acesskernel_src/ui_sdl.c @@ -57,7 +57,7 @@ int UI_Initialise(int MaxWidth, int MaxHeight) return 0; } -Uint32 UI_GetAcessKeyFromSDL(SDLKey Sym, Uint16 Unicode) +Uint32 UI_GetAcessKeyFromSDL(SDLKey Sym) { Uint8 *keystate = SDL_GetKeyState(NULL); int shiftState = 0; @@ -71,41 +71,38 @@ Uint32 UI_GetAcessKeyFromSDL(SDLKey Sym, Uint16 Unicode) return gUI_Keymap[shiftState][Sym]; // Enter key on acess returns \n, but SDL returns \r - if( Sym == SDLK_RETURN ) - Unicode = '\n'; - - // How nice of you, a unicode value - if( Unicode ) - { - ret = Unicode; - } - // Ok, we need to do work :( - else + switch(Sym) { - switch(Sym) - { - case SDLK_UP: ret = KEY_UP; break; - case SDLK_DOWN: ret = KEY_DOWN; break; - case SDLK_LEFT: ret = KEY_LEFT; break; - case SDLK_RIGHT:ret = KEY_RIGHT;break; - case SDLK_CAPSLOCK: ret = KEY_CAPSLOCK; break; - case SDLK_F1: ret = KEY_F1; break; - case SDLK_F2: ret = KEY_F2; break; - case SDLK_F3: ret = KEY_F3; break; - case SDLK_F4: ret = KEY_F4; break; - case SDLK_F5: ret = KEY_F5; break; - case SDLK_F6: ret = KEY_F6; break; - case SDLK_F7: ret = KEY_F7; break; - case SDLK_F8: ret = KEY_F8; break; - case SDLK_F9: ret = KEY_F9; break; - case SDLK_F10: ret = KEY_F10; break; - case SDLK_F11: ret = KEY_F11; break; - case SDLK_F12: ret = KEY_F12; break; - case SDLK_RETURN: ret = '\n'; break; - default: - printf("Unhandled key code %i\n", Sym); - break; - } + case SDLK_a ... SDLK_z: + ret = Sym - SDLK_a + KEYSYM_a; + break; + case SDLK_0 ... SDLK_9: + ret = Sym - SDLK_0 + KEYSYM_0; + break; + case SDLK_UP: ret = KEYSYM_UPARROW; break; + case SDLK_DOWN: ret = KEYSYM_DOWNARROW; break; + case SDLK_LEFT: ret = KEYSYM_LEFTARROW; break; + case SDLK_RIGHT:ret = KEYSYM_RIGHTARROW;break; + case SDLK_CAPSLOCK: ret = KEYSYM_CAPS; break; + case SDLK_F1: ret = KEYSYM_F1; break; + case SDLK_F2: ret = KEYSYM_F2; break; + case SDLK_F3: ret = KEYSYM_F3; break; + case SDLK_F4: ret = KEYSYM_F4; break; + case SDLK_F5: ret = KEYSYM_F5; break; + case SDLK_F6: ret = KEYSYM_F6; break; + case SDLK_F7: ret = KEYSYM_F7; break; + case SDLK_F8: ret = KEYSYM_F8; break; + case SDLK_F9: ret = KEYSYM_F9; break; + case SDLK_F10: ret = KEYSYM_F10; break; + case SDLK_F11: ret = KEYSYM_F11; break; + case SDLK_F12: ret = KEYSYM_F12; break; + case SDLK_RETURN: ret = KEYSYM_RETURN; break; + case SDLK_LALT: ret = KEYSYM_LEFTALT; break; + case SDLK_RALT: ret = KEYSYM_RIGHTALT; break; + case SDLK_LSUPER: ret = KEYSYM_LEFTGUI; break; + default: + printf("Unhandled key code %i\n", Sym); + break; } gUI_Keymap[shiftState][Sym] = ret; @@ -128,22 +125,20 @@ void UI_MainLoop(void) return ; case SDL_KEYDOWN: - acess_sym = UI_GetAcessKeyFromSDL(event.key.keysym.sym, - event.key.keysym.unicode); + acess_sym = UI_GetAcessKeyFromSDL(event.key.keysym.sym); if( gUI_KeyboardCallback ) { - gUI_KeyboardCallback(KEY_ACTION_RAWSYM|event.key.keysym.sym); - gUI_KeyboardCallback(KEY_ACTION_PRESS|acess_sym); + gUI_KeyboardCallback(KEY_ACTION_RAWSYM|acess_sym); + gUI_KeyboardCallback(KEY_ACTION_PRESS|event.key.keysym.unicode); } break; case SDL_KEYUP: - acess_sym = UI_GetAcessKeyFromSDL(event.key.keysym.sym, - event.key.keysym.unicode); + acess_sym = UI_GetAcessKeyFromSDL(event.key.keysym.sym); if( gUI_KeyboardCallback ) { - gUI_KeyboardCallback(KEY_ACTION_RAWSYM|event.key.keysym.sym); - gUI_KeyboardCallback(KEY_ACTION_RELEASE|acess_sym); + gUI_KeyboardCallback(KEY_ACTION_RAWSYM|acess_sym); + gUI_KeyboardCallback(KEY_ACTION_RELEASE|0); } break;