diff --git a/Common/KeyMap.cpp b/Common/KeyMap.cpp index 09eb6ed2e7..afe395e082 100644 --- a/Common/KeyMap.cpp +++ b/Common/KeyMap.cpp @@ -412,6 +412,9 @@ void SetKeyMapping(int map, int deviceId, int key, int btn) controllerMaps[map].keys[KeyDef(deviceId, key)] = btn; } +void RestoreDefault() { + controllerMaps = DefaultKeyMap::KeyMap; +} // TODO: Make the ini format nicer. void LoadFromIni(IniFile &file) { diff --git a/Common/KeyMap.h b/Common/KeyMap.h index 45ad19ff40..436068d1b5 100644 --- a/Common/KeyMap.h +++ b/Common/KeyMap.h @@ -115,5 +115,6 @@ namespace KeyMap { void LoadFromIni(IniFile &iniFile); void SaveToIni(IniFile &iniFile); + void RestoreDefault(); } diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 775ef7b2c9..043e6664a3 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -207,11 +207,11 @@ void EmuScreen::key(const KeyInput &key) { int vk = result - VIRTKEY_FIRST; if (key.flags & KEY_DOWN) { virtKeys[vk] = true; - onVKeyDown(key.keyCode); + onVKeyDown(result); } if (key.flags & KEY_UP) { virtKeys[vk] = false; - onVKeyUp(key.keyCode); + onVKeyUp(result); } } else { if (key.flags & KEY_DOWN) diff --git a/UI/MenuScreens.cpp b/UI/MenuScreens.cpp index 63b3ad26e0..049fc0a831 100644 --- a/UI/MenuScreens.cpp +++ b/UI/MenuScreens.cpp @@ -1548,6 +1548,9 @@ void ControlsScreen::render() { if (UIButton(GEN_ID, hlinear, 250, 0, c->T("Key Mapping"), ALIGN_LEFT)) { screenManager()->push(new KeyMappingScreen()); } + if (UIButton(GEN_ID, hlinear, 250, 0, c->T("Default Mapping"), ALIGN_LEFT)) { + KeyMap::RestoreDefault(); + } UIEnd(); }