fast forward controller hotkey (#837)
* fast forward controller hotkey * more
This commit is contained in:
parent
883852a828
commit
f45f951af8
@ -58,6 +58,7 @@ enum user_event_codes {
|
||||
USER_EVENT_SAVE_STATE = 1,
|
||||
USER_EVENT_LOAD_STATE = 2,
|
||||
USER_EVENT_EXIT_GAME = 3,
|
||||
USER_EVENT_FAST_FORWARD = 4,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
@ -156,7 +157,10 @@ bool sdl_event_filter(void *userdata, SDL_Event *event) {
|
||||
break;
|
||||
case SDL_SCANCODE_F:
|
||||
if (event->key.mod & SDL_KMOD_ALT) {
|
||||
callback.enable_speedlimiter = !callback.enable_speedlimiter;
|
||||
SDL_zero(user_event);
|
||||
user_event.type = SDL_EVENT_USER;
|
||||
user_event.user.code = USER_EVENT_FAST_FORWARD;
|
||||
SDL_PushEvent(&user_event);
|
||||
}
|
||||
break;
|
||||
case SDL_SCANCODE_P:
|
||||
@ -245,6 +249,9 @@ bool sdl_event_filter(void *userdata, SDL_Event *event) {
|
||||
case USER_EVENT_EXIT_GAME:
|
||||
callback.emu_running = false;
|
||||
break;
|
||||
case USER_EVENT_FAST_FORWARD:
|
||||
callback.enable_speedlimiter = !callback.enable_speedlimiter;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -427,34 +427,48 @@ fn handle_joystick_events(ui: &mut ui::Ui) {
|
||||
|
||||
fn handle_hotkeys(keys: u32, last_key_state: u32) {
|
||||
if keys & (1 << L_TRIG) != 0 && last_key_state & (1 << L_TRIG) == 0 {
|
||||
let mut event = sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 1, //save state
|
||||
..Default::default()
|
||||
},
|
||||
unsafe {
|
||||
sdl3_sys::events::SDL_PushEvent(&mut sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 1, //save state
|
||||
..Default::default()
|
||||
},
|
||||
})
|
||||
};
|
||||
unsafe { sdl3_sys::events::SDL_PushEvent(&mut event) };
|
||||
}
|
||||
if keys & (1 << R_TRIG) != 0 && last_key_state & (1 << R_TRIG) == 0 {
|
||||
let mut event = sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 2, //load state
|
||||
..Default::default()
|
||||
},
|
||||
unsafe {
|
||||
sdl3_sys::events::SDL_PushEvent(&mut sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 2, //load state
|
||||
..Default::default()
|
||||
},
|
||||
})
|
||||
};
|
||||
unsafe { sdl3_sys::events::SDL_PushEvent(&mut event) };
|
||||
}
|
||||
if keys & (1 << START_BUTTON) != 0 && last_key_state & (1 << START_BUTTON) == 0 {
|
||||
let mut event = sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 3, //exit game
|
||||
..Default::default()
|
||||
},
|
||||
unsafe {
|
||||
sdl3_sys::events::SDL_PushEvent(&mut sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 3, //exit game
|
||||
..Default::default()
|
||||
},
|
||||
})
|
||||
};
|
||||
}
|
||||
if keys & (1 << Z_TRIG) != 0 && last_key_state & (1 << Z_TRIG) == 0 {
|
||||
unsafe {
|
||||
sdl3_sys::events::SDL_PushEvent(&mut sdl3_sys::events::SDL_Event {
|
||||
user: sdl3_sys::events::SDL_UserEvent {
|
||||
r#type: u32::from(sdl3_sys::events::SDL_EVENT_USER),
|
||||
code: 4, //fast forward
|
||||
..Default::default()
|
||||
},
|
||||
})
|
||||
};
|
||||
unsafe { sdl3_sys::events::SDL_PushEvent(&mut event) };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user