// TODO: Make the ini format nicer. void LoadFromIni(IniFile &file) { RestoreDefault(); if (!file.HasSection("ControlMapping")) { return; } IniFile::Section *controls = file.GetOrCreateSection("ControlMapping"); for (size_t i = 0; i < ARRAY_SIZE(psp_button_names); i++) { std::string value; controls->Get(psp_button_names[i].name.c_str(), &value, ""); // Erase default mapping g_controllerMap.erase(psp_button_names[i].key); if (value.empty()) continue; std::vector<std::string> mappings; SplitString(value, ',', mappings); for (size_t j = 0; j < mappings.size(); j++) { std::vector<std::string> parts; SplitString(mappings[j], '-', parts); int deviceId = atoi(parts[0].c_str()); int keyCode = atoi(parts[1].c_str()); SetKeyMapping(psp_button_names[i].key, KeyDef(deviceId, keyCode), false); } } UpdateConfirmCancelKeys(); }
void RemoveButtonMapping(int btn) { for (auto iter = g_controllerMap.begin(); iter != g_controllerMap.end(); ++iter) { if (iter->first == btn) { g_controllerMap.erase(iter); return; } } }