--- previous/src/keymap.c 2018/04/24 19:29:51 1.1.1.4 +++ previous/src/keymap.c 2018/04/24 19:31:15 1.1.1.5 @@ -23,7 +23,7 @@ const char Keymap_fileid[] = "Hatari key #include "SDL.h" -#define LOG_KEYMAP_LEVEL LOG_WARN +#define LOG_KEYMAP_LEVEL LOG_DEBUG Uint8 modifiers = 0; bool capslock = false; @@ -38,7 +38,7 @@ void Keymap_Init(void) { * NeXT scancode values. */ -Uint8 Keymap_GetKeyFromScancode(SDL_Scancode sdlscancode) { +static Uint8 Keymap_GetKeyFromScancode(SDL_Scancode sdlscancode) { Log_Printf(LOG_KEYMAP_LEVEL, "[Keymap] Scancode: %i (%s)\n", sdlscancode, SDL_GetScancodeName(sdlscancode)); switch (sdlscancode) { @@ -143,7 +143,7 @@ Uint8 Keymap_GetKeyFromScancode(SDL_Scan * NeXT modifier bits. */ -Uint8 Keymap_Keydown_GetModFromScancode(SDL_Scancode sdlscancode) { +static Uint8 Keymap_Keydown_GetModFromScancode(SDL_Scancode sdlscancode) { switch (sdlscancode) { case SDL_SCANCODE_LCTRL: case SDL_SCANCODE_RCTRL: @@ -177,7 +177,7 @@ Uint8 Keymap_Keydown_GetModFromScancode( return modifiers|(capslock?0x02:0x00); } -Uint8 Keymap_Keyup_GetModFromScancode(SDL_Scancode sdlscancode) { +static Uint8 Keymap_Keyup_GetModFromScancode(SDL_Scancode sdlscancode) { switch (sdlscancode) { case SDL_SCANCODE_LCTRL: @@ -217,7 +217,7 @@ Uint8 Keymap_Keyup_GetModFromScancode(SD * NeXT scancode values. */ -Uint8 Keymap_GetKeyFromSymbol(SDL_Keycode sdlkey) { +static Uint8 Keymap_GetKeyFromSymbol(SDL_Keycode sdlkey) { Log_Printf(LOG_KEYMAP_LEVEL, "[Keymap] Symkey: %s\n", SDL_GetKeyName(sdlkey)); switch (sdlkey) { @@ -318,7 +318,7 @@ Uint8 Keymap_GetKeyFromSymbol(SDL_Keycod * NeXT modifier bits. */ -Uint8 Keymap_Keydown_GetModFromSymbol(SDL_Keycode sdl_modifier) { +static Uint8 Keymap_Keydown_GetModFromSymbol(SDL_Keycode sdl_modifier) { switch (sdl_modifier) { case SDLK_LCTRL: @@ -353,7 +353,7 @@ Uint8 Keymap_Keydown_GetModFromSymbol(SD return modifiers|(capslock?0x02:0x00); } -Uint8 Keymap_Keyup_GetModFromSymbol(SDL_Keycode sdl_modifier) { +static Uint8 Keymap_Keyup_GetModFromSymbol(SDL_Keycode sdl_modifier) { switch (sdl_modifier) { case SDLK_LCTRL: @@ -391,6 +391,41 @@ Uint8 Keymap_Keyup_GetModFromSymbol(SDL_ /*-----------------------------------------------------------------------*/ /** + * Mouse wheel mapped to cursor keys (currently disabled) + */ + +static bool pendingX = true; +static bool pendingY = true; + +static void post_key_event(int sym, int scan) { + SDL_Event sdlevent; + sdlevent.type = SDL_KEYDOWN; + sdlevent.key.keysym.sym = sym; + sdlevent.key.keysym.scancode = scan; + SDL_PushEvent(&sdlevent); + sdlevent.type = SDL_KEYUP; + sdlevent.key.keysym.sym = sym; + sdlevent.key.keysym.scancode = scan; + SDL_PushEvent(&sdlevent); +} + +void Keymap_MouseWheel(SDL_MouseWheelEvent* event) { + if(!(pendingX)) { + pendingX = true; + if (event->x > 0) post_key_event(SDLK_LEFT, SDL_SCANCODE_LEFT); + else if(event->x < 0) post_key_event(SDLK_RIGHT, SDL_SCANCODE_RIGHT); + } + + if(!(pendingY)) { + pendingY = true; + if (event->y < 0) post_key_event(SDLK_UP, SDL_SCANCODE_UP); + else if(event->y > 0) post_key_event(SDLK_DOWN, SDL_SCANCODE_DOWN); + } +} + + +/*-----------------------------------------------------------------------*/ +/** * User pressed key down */ void Keymap_KeyDown(SDL_Keysym *sdlkey) @@ -420,8 +455,7 @@ void Keymap_KeyDown(SDL_Keysym *sdlkey) /** * User released key */ -void Keymap_KeyUp(SDL_Keysym *sdlkey) -{ +void Keymap_KeyUp(SDL_Keysym *sdlkey) { Uint8 next_mod, next_key; if (ShortCut_CheckKeys(sdlkey->mod, sdlkey->sym, 0))