|
@@ -388,12 +388,16 @@ static void sdl_process_key(SDL_KeyboardEvent *ev)
|
|
else
|
|
else
|
|
modifiers_state[keycode] = 1;
|
|
modifiers_state[keycode] = 1;
|
|
break;
|
|
break;
|
|
|
|
+#define QEMU_SDL_VERSION ((SDL_MAJOR_VERSION << 8) + SDL_MINOR_VERSION)
|
|
|
|
+#if QEMU_SDL_VERSION < 0x102 || QEMU_SDL_VERSION == 0x102 && SDL_PATCHLEVEL < 14
|
|
|
|
+ /* SDL versions before 1.2.14 don't support key up for caps/num lock. */
|
|
case 0x45: /* num lock */
|
|
case 0x45: /* num lock */
|
|
case 0x3a: /* caps lock */
|
|
case 0x3a: /* caps lock */
|
|
/* SDL does not send the key up event, so we generate it */
|
|
/* SDL does not send the key up event, so we generate it */
|
|
kbd_put_keycode(keycode);
|
|
kbd_put_keycode(keycode);
|
|
kbd_put_keycode(keycode | SCANCODE_UP);
|
|
kbd_put_keycode(keycode | SCANCODE_UP);
|
|
return;
|
|
return;
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
/* now send the key code */
|
|
/* now send the key code */
|
|
@@ -831,6 +835,10 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
|
|
setenv("SDL_VIDEO_ALLOW_SCREENSAVER", "1", 0);
|
|
setenv("SDL_VIDEO_ALLOW_SCREENSAVER", "1", 0);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* Enable normal up/down events for Caps-Lock and Num-Lock keys.
|
|
|
|
+ * This requires SDL >= 1.2.14. */
|
|
|
|
+ setenv("SDL_DISABLE_LOCK_KEYS", "1", 1);
|
|
|
|
+
|
|
flags = SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE;
|
|
flags = SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE;
|
|
if (SDL_Init (flags)) {
|
|
if (SDL_Init (flags)) {
|
|
fprintf(stderr, "Could not initialize SDL(%s) - exiting\n",
|
|
fprintf(stderr, "Could not initialize SDL(%s) - exiting\n",
|