From 832f346fc888eae86e19d8dee03df77476404a99 Mon Sep 17 00:00:00 2001 From: punkrockguy318 Date: Sat, 28 Jun 2008 15:49:37 +0000 Subject: [PATCH] most of the SDL hotkeys can now be mapped in the config file under SDL.Hotkeys.* --- src/drivers/sdl/config.cpp | 17 +++++++++ src/drivers/sdl/input.cpp | 73 +++++++++++++++++++++----------------- 2 files changed, 58 insertions(+), 32 deletions(-) diff --git a/src/drivers/sdl/config.cpp b/src/drivers/sdl/config.cpp index de2b7efb..dab7ed64 100644 --- a/src/drivers/sdl/config.cpp +++ b/src/drivers/sdl/config.cpp @@ -253,6 +253,23 @@ InitConfig() config->addOption(prefix + FamilyKeyBoardNames[j], DefaultFamilyKeyBoard[j]); } + + // Hotkeys + prefix = "SDL.Hotkeys."; + config->addOption(prefix + "CheatMenu", SDLK_F2); + config->addOption(prefix + "RenderBG", SDLK_F4); + config->addOption(prefix + "SaveState", SDLK_F5); + config->addOption(prefix + "LoadState", SDLK_F7); + config->addOption(prefix + "Screenshot", SDLK_F9); + config->addOption(prefix + "Reset", SDLK_F10); + config->addOption(prefix + "Power", SDLK_F11); + config->addOption(prefix + "Quit", SDLK_ESCAPE); + config->addOption(prefix + "Pause", SDLK_BACKSLASH); + config->addOption(prefix + "DecraseSpeed", SDLK_MINUS); + config->addOption(prefix + "IncreaseSpeed", SDLK_EQUALS); + config->addOption(prefix + "FrameAdvance", SDLK_RCTRL); + + // All mouse devices config->addOption("SDL.OekaKids.0.DeviceType", "Mouse"); diff --git a/src/drivers/sdl/input.cpp b/src/drivers/sdl/input.cpp index 279479c7..511cda7d 100644 --- a/src/drivers/sdl/input.cpp +++ b/src/drivers/sdl/input.cpp @@ -23,6 +23,8 @@ #include "main.h" #include "dface.h" #include "input.h" +#include "config.h" + #include "sdl-video.h" @@ -34,6 +36,8 @@ /** GLOBALS **/ int NoWaiting=1; +extern Config *g_config; + /* UsrInputType[] is user-specified. InputType[] is current (game loading can override user settings) @@ -144,7 +148,7 @@ static int g_fkbEnabled = 0; static void KeyboardCommands() { - int is_shift, is_alt; + int is_shift, is_alt, key; // get the keyboard input g_keyState = SDL_GetKeyState(NULL); @@ -164,13 +168,13 @@ KeyboardCommands() is_shift = KEY(LEFTSHIFT) | KEY(RIGHTSHIFT); is_alt = KEY(LEFTALT) | KEY(RIGHTALT); - - // f4 controls rendering - if(keyonly(F4)) { + + g_config->getOption("SDL.Hotkeys.RenderBG", &key); + if(g_keyState[key]) { if(is_shift) { FCEUI_SetRenderPlanes(true, false); } else { - FCEUI_SetRenderPlanes(false, true); + FCEUI_SetRenderPlanes(true, true); } } @@ -195,29 +199,33 @@ KeyboardCommands() } } - // f9 is save snapshot key - if(keyonly(F9)) { + + + g_config->getOption("SDL.Hotkeys.Screenshot", &key); + if(g_keyState[key]) { FCEUI_SaveSnapshot(); } // if not NES Sound Format if(gametype != GIT_NSF) { - // f2 to enable cheats - if(keyonly(F2)) { + + g_config->getOption("SDL.Hotkeys.CheatMenu", &key); + if(g_keyState[key]) { DoCheatSeq(); } - // f5 to save state, Shift-f5 to save movie - if(keyonly(F5)) { + g_config->getOption("SDL.Hotkeys.SaveState", &key); + if(g_keyState[key]) { if(is_shift) { FCEUI_SaveMovie(NULL,MOVIE_FLAG_NONE); } else { FCEUI_SaveState(NULL); } } - + + g_config->getOption("SDL.Hotkeys.LoadState", &key); // f7 to load state, Shift-f7 to load movie - if(keyonly(F7)) { + if(g_keyState[key]) { if(is_shift) { //mbg merge 7/23/06 loadmovie takes another arg now FCEUI_LoadMovie(NULL, false, false, false); @@ -227,41 +235,42 @@ KeyboardCommands() } } - // f1 to toggle tile view - /* - if(keyonly(F1)) { - FCEUI_ToggleTileView(); - } - */ - - // - to decrease speed, = to increase speed - if(keyonly(MINUS)) { + + g_config->getOption("SDL.Hotkeys.DecreaseSpeed", &key); + if(g_keyState[key]) { + // this doesn't seem to work right now DecreaseEmulationSpeed(); } - if(keyonly(EQUAL)) { + g_config->getOption("SDL.Hotkeys.IncreaseSpeed", &key); + if(g_keyState[key]) { + // this seems quite sporadic IncreaseEmulationSpeed(); } if(keyonly(BACKSPACE)) { FCEUI_MovieToggleFrameDisplay(); } - if(keyonly(BACKSLASH)) { + g_config->getOption("SDL.Hotkeys.Pause", &key); + if(g_keyState[key]) { FCEUI_ToggleEmulationPause(); } - if(keyonly(RIGHTCONTROL)) { - FCEUI_FrameAdvance(); + g_config->getOption("SDL.Hotkeys.FrameAdvance", &key); + if(g_keyState[key]) { + // this currently crashes fceu for me, is this broken? + //FCEUI_FrameAdvance(); } - // f10 reset, f11 power - if(keyonly(F10)) { + + g_config->getOption("SDL.Hotkeys.Reset", &key); + if(g_keyState[key]) { FCEUI_ResetNES(); } - if(keyonly(F11)) { + g_config->getOption("SDL.Hotkeys.Power", &key); + if(g_keyState[key]) { FCEUI_PowerNES(); } - - // F12 or Esc close game - if(KEY(F12) || KEY(ESCAPE)) { + g_config->getOption("SDL.Hotkeys.Quit", &key); + if(g_keyState[key]) { FCEUI_CloseGame(); }