mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-25 15:15:40 +00:00
Merge pull request #506 from ggrtk/analog-controller
Update input profiles and input profile handling
This commit is contained in:
commit
13c3426148
|
@ -1,22 +1,24 @@
|
||||||
[Controller1]
|
[Controller1]
|
||||||
Type=AnalogController
|
Type = AnalogController
|
||||||
ButtonUp=Controller0/Button11
|
ButtonUp = Controller0/Button11
|
||||||
ButtonDown=Controller0/Button12
|
ButtonDown = Controller0/Button12
|
||||||
ButtonLeft=Controller0/Button13
|
ButtonLeft = Controller0/Button13
|
||||||
ButtonRight=Controller0/Button14
|
ButtonRight = Controller0/Button14
|
||||||
ButtonSelect=Controller0/Button4
|
ButtonSelect = Controller0/Button4
|
||||||
ButtonStart=Controller0/Button6
|
ButtonStart = Controller0/Button6
|
||||||
ButtonTriangle=Controller0/Button3
|
ButtonTriangle = Controller0/Button3
|
||||||
ButtonCross=Controller0/Button0
|
ButtonCross = Controller0/Button0
|
||||||
ButtonCircle=Controller0/Button1
|
ButtonCircle = Controller0/Button1
|
||||||
ButtonSquare=Controller0/Button2
|
ButtonSquare = Controller0/Button2
|
||||||
ButtonL1=Controller0/Button9
|
ButtonL1 = Controller0/Button9
|
||||||
ButtonL2=Controller0/+Axis4
|
ButtonL2 = Controller0/+Axis4
|
||||||
ButtonR1=Controller0/Button10
|
ButtonR1 = Controller0/Button10
|
||||||
ButtonR2=Controller0/+Axis5
|
ButtonR2 = Controller0/+Axis5
|
||||||
ButtonL3=Controller0/Button7
|
ButtonL3 = Controller0/Button7
|
||||||
ButtonR3=Controller0/Button8
|
ButtonR3 = Controller0/Button8
|
||||||
AxisLeftX=Controller0/Axis0
|
ButtonAnalog = Controller0/Button5
|
||||||
AxisLeftY=Controller0/Axis1
|
AxisLeftX = Controller0/Axis0
|
||||||
AxisRightX=Controller0/Axis2
|
AxisLeftY = Controller0/Axis1
|
||||||
AxisRightY=Controller0/Axis3
|
AxisRightX = Controller0/Axis2
|
||||||
|
AxisRightY = Controller0/Axis3
|
||||||
|
Rumble = Controller0
|
||||||
|
|
16
data/inputprofiles/PlayStation Classic Controller.ini
Normal file
16
data/inputprofiles/PlayStation Classic Controller.ini
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
[Controller1]
|
||||||
|
Type = DigitalController
|
||||||
|
ButtonUp = Controller0/-Axis1
|
||||||
|
ButtonDown = Controller0/+Axis1
|
||||||
|
ButtonLeft = Controller0/-Axis0
|
||||||
|
ButtonRight = Controller0/+Axis0
|
||||||
|
ButtonSelect = Controller0/Button4
|
||||||
|
ButtonStart = Controller0/Button6
|
||||||
|
ButtonTriangle = Controller0/Button3
|
||||||
|
ButtonCross = Controller0/Button0
|
||||||
|
ButtonCircle = Controller0/Button1
|
||||||
|
ButtonSquare = Controller0/Button2
|
||||||
|
ButtonL1 = Controller0/Button9
|
||||||
|
ButtonL2 = Controller0/+Axis4
|
||||||
|
ButtonR1 = Controller0/Button10
|
||||||
|
ButtonR2 = Controller0/+Axis5
|
|
@ -67,7 +67,7 @@ std::optional<s32> AnalogController::GetButtonCodeByName(std::string_view button
|
||||||
|
|
||||||
void AnalogController::SetAxisState(s32 axis_code, float value)
|
void AnalogController::SetAxisState(s32 axis_code, float value)
|
||||||
{
|
{
|
||||||
if (axis_code < 0 || axis_code >= static_cast<s32>(Button::Count))
|
if (axis_code < 0 || axis_code >= static_cast<s32>(Axis::Count))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// -1..1 -> 0..255
|
// -1..1 -> 0..255
|
||||||
|
|
|
@ -1068,15 +1068,12 @@ void CommonHostInterface::ApplyInputProfile(const char* profile_path, SettingsIn
|
||||||
bool CommonHostInterface::SaveInputProfile(const char* profile_path, SettingsInterface& si)
|
bool CommonHostInterface::SaveInputProfile(const char* profile_path, SettingsInterface& si)
|
||||||
{
|
{
|
||||||
if (FileSystem::FileExists(profile_path))
|
if (FileSystem::FileExists(profile_path))
|
||||||
{
|
Log_WarningPrintf("Existing input profile at '%s' will be overwritten", profile_path);
|
||||||
if (!FileSystem::DeleteFile(profile_path))
|
else
|
||||||
{
|
Log_WarningPrintf("Input profile at '%s' does not exist, new input profile will be created", profile_path);
|
||||||
Log_ErrorPrintf("Failed to delete existing input profile '%s' when saving", profile_path);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
INISettingsInterface profile(profile_path);
|
INISettingsInterface profile(profile_path);
|
||||||
|
profile.Clear();
|
||||||
|
|
||||||
for (u32 controller_index = 1; controller_index <= NUM_CONTROLLER_AND_CARD_PORTS; controller_index++)
|
for (u32 controller_index = 1; controller_index <= NUM_CONTROLLER_AND_CARD_PORTS; controller_index++)
|
||||||
{
|
{
|
||||||
|
@ -1109,7 +1106,13 @@ bool CommonHostInterface::SaveInputProfile(const char* profile_path, SettingsInt
|
||||||
profile.SetStringValue(section_name, "Rumble", rumble_value.c_str());
|
profile.SetStringValue(section_name, "Rumble", rumble_value.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
profile.Save();
|
if(!profile.Save())
|
||||||
|
{
|
||||||
|
Log_ErrorPrintf("Failed to save input profile to '%s'", profile_path);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Log_SuccessPrintf("Input profile saved to '%s'", profile_path);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,17 @@ INISettingsInterface::~INISettingsInterface()
|
||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
void INISettingsInterface::Save()
|
bool INISettingsInterface::Save()
|
||||||
{
|
{
|
||||||
SI_Error err = m_ini.SaveFile(m_filename.c_str(), false);
|
SI_Error err = m_ini.SaveFile(m_filename.c_str(), false);
|
||||||
if (err != SI_OK)
|
if (err != SI_OK)
|
||||||
|
{
|
||||||
Log_WarningPrintf("Failed to save settings to '%s'.", m_filename.c_str());
|
Log_WarningPrintf("Failed to save settings to '%s'.", m_filename.c_str());
|
||||||
else
|
return false;
|
||||||
m_dirty = false;
|
}
|
||||||
|
|
||||||
|
m_dirty = false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void INISettingsInterface::Clear()
|
void INISettingsInterface::Clear()
|
||||||
|
|
|
@ -9,7 +9,7 @@ public:
|
||||||
INISettingsInterface(std::string filename);
|
INISettingsInterface(std::string filename);
|
||||||
~INISettingsInterface();
|
~INISettingsInterface();
|
||||||
|
|
||||||
void Save();
|
bool Save();
|
||||||
|
|
||||||
void Clear() override;
|
void Clear() override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue