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;
}
}
-static int shift = 0, ctrl = 0;
+static int shift = 0, ctrl = 0, alt = 0;
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);
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) {
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);