Use ALT + UP key to keep walking until pressing UP key again (without ALT)
authorAndreas Eversberg <jolly@eversberg.eu>
Sun, 27 May 2018 17:05:31 +0000 (19:05 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sun, 27 May 2018 17:05:31 +0000 (19:05 +0200)
src/libsdl/sdl.c
src/mercenary/main.c

index 079b1a8..804695c 100644 (file)
@@ -202,6 +202,8 @@ static enum keycode sdl2keycode(SDL_Keycode sym)
        case SDLK_RCTRL: return KEYCODE_RCTRL;
        case SDLK_LSHIFT: return KEYCODE_LSHIFT;
        case SDLK_RSHIFT: return KEYCODE_RSHIFT;
+       case SDLK_LALT: return KEYCODE_LALT;
+       case SDLK_RALT: return KEYCODE_RALT;
        case SDLK_PAUSE: return KEYCODE_PAUSE;
        case SDLK_LEFT: return KEYCODE_LEFT;
        case SDLK_RIGHT: return KEYCODE_RIGHT;
index f0b464b..f580bf1 100644 (file)
@@ -1060,7 +1060,7 @@ fail:
        }
 }
 
-static int shift = 0, ctrl = 0;
+static int shift = 0, ctrl = 0, alt = 0;
 
 static void keyboard_sdl(int down, enum keycode keycode)
 {
@@ -1198,6 +1198,14 @@ static void keyboard_sdl(int down, enum keycode keycode)
                set_amiga_key(keycode, down);
                shift = down;
                break;
+       case KEYCODE_LALT:
+               set_amiga_key(keycode, down);
+               alt = down;
+               break;
+       case KEYCODE_RALT:
+               set_amiga_key(keycode, down);
+               alt = down;
+               break;
        case KEYCODE_LEFT:
                if (shift && down) {
                        set_amiga_key(keycode, down);
@@ -1223,7 +1231,8 @@ static void keyboard_sdl(int down, enum keycode keycode)
                        break;
                }
                set_amiga_key(keycode, 0);
-               set_joystick(-1, -1, down, -1, -1);
+               if (!alt || down)
+                       set_joystick(-1, -1, down, 0, -1);
                break;
        case KEYCODE_DOWN:
                if (shift && down) {
@@ -1232,7 +1241,8 @@ static void keyboard_sdl(int down, enum keycode keycode)
                        break;
                }
                set_amiga_key(keycode, 0);
-               set_joystick(-1, -1, -1, down, -1);
+               if (!alt || down)
+                       set_joystick(-1, -1, 0, down, -1);
                break;
        case KEYCODE_END:
                set_joystick(-1, -1, -1, -1, down);