diff --git a/Core/Config.cpp b/Core/Config.cpp index bf95896234..5241f8c2aa 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -959,6 +959,8 @@ static ConfigSetting controlSettings[] = { ConfigSetting("MouseSensitivity", &g_Config.fMouseSensitivity, 0.1f, true, true), ConfigSetting("MouseSmoothing", &g_Config.fMouseSmoothing, 0.9f, true, true), + ConfigSetting("SystemControls", &g_Config.bSystemControls, true, true, false), + ConfigSetting(false), }; diff --git a/Core/Config.h b/Core/Config.h index 8eeeea1e10..0c1221cca0 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -398,6 +398,8 @@ public: float fMouseSensitivity; float fMouseSmoothing; + bool bSystemControls; + // Use the hardware scaler to scale up the image to save fillrate. Similar to Windows' window size, really. int iAndroidHwScale; // 0 = device resolution. 1 = 480x272 (extended to correct aspect), 2 = 960x544 etc. diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index 526eafd389..990ba1c8e1 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -649,6 +649,7 @@ void GameSettingsScreen::CreateViews() { controlsSettings->Add(new Choice(co->T("Control Mapping")))->OnClick.Handle(this, &GameSettingsScreen::OnControlMapping); #if defined(USING_WIN_UI) + controlsSettings->Add(new CheckBox(&g_Config.bSystemControls, co->T("Enable standard shortcut keys"))); controlsSettings->Add(new CheckBox(&g_Config.bGamepadOnlyFocused, co->T("Ignore gamepads when not focused"))); #endif diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index 567635ffe5..b5dad2a693 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -244,9 +244,9 @@ namespace MainWindow { // Emulation menu TranslateMenuItem(menu, ID_EMULATION_PAUSE); - TranslateMenuItem(menu, ID_EMULATION_STOP, L"\tCtrl+W"); - TranslateMenuItem(menu, ID_EMULATION_RESET, L"\tCtrl+B"); - TranslateMenuItem(menu, ID_EMULATION_SWITCH_UMD, L"\tCtrl+U"); + TranslateMenuItem(menu, ID_EMULATION_STOP, g_Config.bSystemControls ? L"\tCtrl+W" : L""); + TranslateMenuItem(menu, ID_EMULATION_RESET, g_Config.bSystemControls ? L"\tCtrl+B" : L""); + TranslateMenuItem(menu, ID_EMULATION_SWITCH_UMD, g_Config.bSystemControls ? L"\tCtrl+U" : L""); TranslateMenuItem(menu, ID_EMULATION_ROTATION_MENU); TranslateMenuItem(menu, ID_EMULATION_ROTATION_H); TranslateMenuItem(menu, ID_EMULATION_ROTATION_V); @@ -254,7 +254,7 @@ namespace MainWindow { TranslateMenuItem(menu, ID_EMULATION_ROTATION_V_R); // Debug menu - TranslateMenuItem(menu, ID_TOGGLE_BREAK, L"\tF8", "Break"); + TranslateMenuItem(menu, ID_TOGGLE_BREAK, g_Config.bSystemControls ? L"\tF8" : L"", "Break"); TranslateMenuItem(menu, ID_DEBUG_BREAKONLOAD); TranslateMenuItem(menu, ID_DEBUG_IGNOREILLEGALREADS); TranslateMenuItem(menu, ID_DEBUG_LOADMAPFILE); @@ -262,14 +262,14 @@ namespace MainWindow { TranslateMenuItem(menu, ID_DEBUG_LOADSYMFILE); TranslateMenuItem(menu, ID_DEBUG_SAVESYMFILE); TranslateMenuItem(menu, ID_DEBUG_RESETSYMBOLTABLE); - TranslateMenuItem(menu, ID_DEBUG_TAKESCREENSHOT, L"\tF12"); + TranslateMenuItem(menu, ID_DEBUG_TAKESCREENSHOT, g_Config.bSystemControls ? L"\tF12" : L""); TranslateMenuItem(menu, ID_DEBUG_DUMPNEXTFRAME); TranslateMenuItem(menu, ID_DEBUG_SHOWDEBUGSTATISTICS); - TranslateMenuItem(menu, ID_DEBUG_DISASSEMBLY, L"\tCtrl+D"); - TranslateMenuItem(menu, ID_DEBUG_GEDEBUGGER, L"\tCtrl+G"); + TranslateMenuItem(menu, ID_DEBUG_DISASSEMBLY, g_Config.bSystemControls ? L"\tCtrl+D" : L""); + TranslateMenuItem(menu, ID_DEBUG_GEDEBUGGER, g_Config.bSystemControls ? L"\tCtrl+G" : L""); TranslateMenuItem(menu, ID_DEBUG_EXTRACTFILE); - TranslateMenuItem(menu, ID_DEBUG_LOG, L"\tCtrl+L"); - TranslateMenuItem(menu, ID_DEBUG_MEMORYVIEW, L"\tCtrl+M"); + TranslateMenuItem(menu, ID_DEBUG_LOG, g_Config.bSystemControls ? L"\tCtrl+L" : L""); + TranslateMenuItem(menu, ID_DEBUG_MEMORYVIEW, g_Config.bSystemControls ? L"\tCtrl+M" : L""); // Options menu TranslateMenuItem(menu, ID_OPTIONS_LANGUAGE); @@ -287,10 +287,10 @@ namespace MainWindow { TranslateMenuItem(menu, ID_FILE_DUMPAUDIO); // Skip display multipliers x1-x10 - TranslateMenuItem(menu, ID_OPTIONS_FULLSCREEN, L"\tAlt+Return, F11"); + TranslateMenuItem(menu, ID_OPTIONS_FULLSCREEN, g_Config.bSystemControls ? L"\tAlt+Return, F11" : L""); TranslateMenuItem(menu, ID_OPTIONS_VSYNC); TranslateMenuItem(menu, ID_OPTIONS_SHADER_MENU); - TranslateMenuItem(menu, ID_OPTIONS_SCREEN_MENU, L"\tCtrl+1"); + TranslateMenuItem(menu, ID_OPTIONS_SCREEN_MENU, g_Config.bSystemControls ? L"\tCtrl+1" : L""); TranslateMenuItem(menu, ID_OPTIONS_SCREENAUTO); // Skip rendering resolution 2x-5x.. TranslateMenuItem(menu, ID_OPTIONS_WINDOW_MENU); @@ -304,7 +304,7 @@ namespace MainWindow { TranslateMenuItem(menu, ID_OPTIONS_RENDERMODE_MENU); TranslateMenuItem(menu, ID_OPTIONS_NONBUFFEREDRENDERING); TranslateMenuItem(menu, ID_OPTIONS_BUFFEREDRENDERING); - TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_MENU, L"\tF7"); + TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_MENU, g_Config.bSystemControls ? L"\tF7" : L""); TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_AUTO); TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIP_0); TranslateMenuItem(menu, ID_OPTIONS_FRAMESKIPTYPE_MENU); @@ -330,8 +330,8 @@ namespace MainWindow { TranslateMenuItem(menu, ID_OPTIONS_VERTEXCACHE); TranslateMenuItem(menu, ID_OPTIONS_SHOWFPS); TranslateMenuItem(menu, ID_EMULATION_SOUND); - TranslateMenuItem(menu, ID_EMULATION_CHEATS, L"\tCtrl+T"); - TranslateMenuItem(menu, ID_EMULATION_CHAT, L"\tCtrl+C"); + TranslateMenuItem(menu, ID_EMULATION_CHEATS, g_Config.bSystemControls ? L"\tCtrl+T" : L""); + TranslateMenuItem(menu, ID_EMULATION_CHAT, g_Config.bSystemControls ? L"\tCtrl+C" : L""); // Help menu: it's translated in CreateHelpMenu. CreateHelpMenu(menu); diff --git a/Windows/main.cpp b/Windows/main.cpp index c322b755b7..484c487efb 100644 --- a/Windows/main.cpp +++ b/Windows/main.cpp @@ -720,16 +720,16 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin { case WINDOW_MAINWINDOW: wnd = hwndMain; - accel = hAccelTable; + accel = g_Config.bSystemControls ? hAccelTable : NULL; break; case WINDOW_CPUDEBUGGER: - wnd = disasmWindow ? disasmWindow->GetDlgHandle() : 0; - accel = hDebugAccelTable; + wnd = disasmWindow ? disasmWindow->GetDlgHandle() : NULL; + accel = g_Config.bSystemControls ? hDebugAccelTable : NULL; break; case WINDOW_GEDEBUGGER: default: - wnd = 0; - accel = 0; + wnd = NULL; + accel = NULL; break; }