Never forward capture keys
In relative mode, Alt and Super are "capture keys". Never forward them
to the input manager, to avoid inconsistencies between UP and DOWN
events.
@@ -824,14 +824,13 @@ sc_screen_handle_event(struct sc_screen *screen, SDL_Event *event) {
if (sc_screen_is_mouse_capture_key(key)) {
if (!screen->mouse_capture_key_pressed) {
screen->mouse_capture_key_pressed = key;
- return;
} else {
// Another mouse capture key has been pressed, cancel
// mouse (un)capture
screen->mouse_capture_key_pressed = 0;
- // Do not return, the event must be forwarded to the
- // input manager
}
+ // Mouse capture keys are never forwarded to the device
+ return;
}
}
break;
@@ -840,14 +839,16 @@ sc_screen_handle_event(struct sc_screen *screen, SDL_Event *event) {
SDL_Keycode key = event->key.keysym.sym;
SDL_Keycode cap = screen->mouse_capture_key_pressed;
screen->mouse_capture_key_pressed = 0;
+ if (sc_screen_is_mouse_capture_key(key)) {
if (key == cap) {
// A mouse capture key has been pressed then released:
// toggle the capture mouse mode
- sc_screen_capture_mouse(screen, !screen->mouse_captured);
+ sc_screen_capture_mouse(screen,
+ !screen->mouse_captured);
+ }
+ // Mouse capture keys are never forwarded to the device
return;
}
- // Do not return, the event must be forwarded to the input
- // manager
}
break;
case SDL_MOUSEWHEEL:
