Merge pull request #8655 from Techjar/fix-hotkey-groups
Core/HotkeyManager: Fix group names in config
This commit is contained in:
commit
4711b76cc4
|
@ -176,6 +176,11 @@ bool IniFile::DeleteSection(std::string_view section_name)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IniFile::Exists(std::string_view section_name) const
|
||||||
|
{
|
||||||
|
return GetSection(section_name) != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
bool IniFile::Exists(std::string_view section_name, std::string_view key) const
|
bool IniFile::Exists(std::string_view section_name, std::string_view key) const
|
||||||
{
|
{
|
||||||
const Section* section = GetSection(section_name);
|
const Section* section = GetSection(section_name);
|
||||||
|
|
|
@ -119,6 +119,7 @@ public:
|
||||||
|
|
||||||
bool Save(const std::string& filename);
|
bool Save(const std::string& filename);
|
||||||
|
|
||||||
|
bool Exists(std::string_view section_name) const;
|
||||||
// Returns true if key exists in section
|
// Returns true if key exists in section
|
||||||
bool Exists(std::string_view section_name, std::string_view key) const;
|
bool Exists(std::string_view section_name, std::string_view key) const;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
#include "Common/FileUtil.h"
|
||||||
|
#include "Common/IniFile.h"
|
||||||
#include "Common/StringUtil.h"
|
#include "Common/StringUtil.h"
|
||||||
|
|
||||||
#include "InputCommon/ControllerEmu/Control/Input.h"
|
#include "InputCommon/ControllerEmu/Control/Input.h"
|
||||||
|
@ -238,6 +240,43 @@ bool IsPressed(int id, bool held)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function exists to load the old "Keys" group so pre-existing configs don't break.
|
||||||
|
// TODO: Remove this at a future date when we're confident most configs are migrated.
|
||||||
|
static void LoadLegacyConfig(ControllerEmu::EmulatedController* controller)
|
||||||
|
{
|
||||||
|
IniFile inifile;
|
||||||
|
if (inifile.Load(File::GetUserPath(D_CONFIG_IDX) + "Hotkeys.ini"))
|
||||||
|
{
|
||||||
|
if (!inifile.Exists("Hotkeys") && inifile.Exists("Hotkeys1"))
|
||||||
|
{
|
||||||
|
auto sec = inifile.GetOrCreateSection("Hotkeys1");
|
||||||
|
|
||||||
|
{
|
||||||
|
std::string defdev;
|
||||||
|
sec->Get("Device", &defdev, "");
|
||||||
|
controller->SetDefaultDevice(defdev);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& group : controller->groups)
|
||||||
|
{
|
||||||
|
for (auto& control : group->controls)
|
||||||
|
{
|
||||||
|
std::string key("Keys/" + control->name);
|
||||||
|
|
||||||
|
if (sec->Exists(key))
|
||||||
|
{
|
||||||
|
std::string expression;
|
||||||
|
sec->Get(key, &expression, "");
|
||||||
|
control->control_ref->SetExpression(std::move(expression));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
controller->UpdateReferences(g_controller_interface);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Initialize()
|
void Initialize()
|
||||||
{
|
{
|
||||||
if (s_config.ControllersNeedToBeCreated())
|
if (s_config.ControllersNeedToBeCreated())
|
||||||
|
@ -246,7 +285,7 @@ void Initialize()
|
||||||
s_config.RegisterHotplugCallback();
|
s_config.RegisterHotplugCallback();
|
||||||
|
|
||||||
// load the saved controller config
|
// load the saved controller config
|
||||||
s_config.LoadConfig(true);
|
LoadConfig();
|
||||||
|
|
||||||
s_hotkey_down = {};
|
s_hotkey_down = {};
|
||||||
|
|
||||||
|
@ -256,6 +295,7 @@ void Initialize()
|
||||||
void LoadConfig()
|
void LoadConfig()
|
||||||
{
|
{
|
||||||
s_config.LoadConfig(true);
|
s_config.LoadConfig(true);
|
||||||
|
LoadLegacyConfig(s_config.GetController(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
ControllerEmu::ControlGroup* GetHotkeyGroup(HotkeyGroup group)
|
ControllerEmu::ControlGroup* GetHotkeyGroup(HotkeyGroup group)
|
||||||
|
@ -307,7 +347,7 @@ HotkeyManager::HotkeyManager()
|
||||||
for (std::size_t group = 0; group < m_hotkey_groups.size(); group++)
|
for (std::size_t group = 0; group < m_hotkey_groups.size(); group++)
|
||||||
{
|
{
|
||||||
m_hotkey_groups[group] =
|
m_hotkey_groups[group] =
|
||||||
(m_keys[group] = new ControllerEmu::Buttons("Keys", s_groups_info[group].name));
|
(m_keys[group] = new ControllerEmu::Buttons(s_groups_info[group].name));
|
||||||
groups.emplace_back(m_hotkey_groups[group]);
|
groups.emplace_back(m_hotkey_groups[group]);
|
||||||
for (int key = s_groups_info[group].first; key <= s_groups_info[group].last; key++)
|
for (int key = s_groups_info[group].first; key <= s_groups_info[group].last; key++)
|
||||||
{
|
{
|
||||||
|
@ -322,7 +362,7 @@ HotkeyManager::~HotkeyManager()
|
||||||
|
|
||||||
std::string HotkeyManager::GetName() const
|
std::string HotkeyManager::GetName() const
|
||||||
{
|
{
|
||||||
return std::string("Hotkeys") + char('1' + 0);
|
return "Hotkeys";
|
||||||
}
|
}
|
||||||
|
|
||||||
void HotkeyManager::GetInput(HotkeyStatus* const kb)
|
void HotkeyManager::GetInput(HotkeyStatus* const kb)
|
||||||
|
|
Loading…
Reference in New Issue