Use ALT + UP key to keep walking until pressing UP key again (without ALT)
[mercenary-reloaded.git] / src / mercenary / main.c
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);