Skip to content

Commit

Permalink
Manually specify each port number for multiple controller defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
SirMangler committed Feb 21, 2023
1 parent f1d81e5 commit bc7ba2a
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 63 deletions.
54 changes: 27 additions & 27 deletions Source/Core/Core/HW/GCPadEmu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,12 +173,12 @@ void GCPad::LoadDefaults(const ControllerInterface& ciface)
// Buttons
#if _UWP
// If we're running on UWP, we're likely on an Xbox. These defaults work for Xbox One & Series.
m_buttons->SetControlExpression(0, "`Button A`"); // A
m_buttons->SetControlExpression(1, "`Button B`"); // B
m_buttons->SetControlExpression(2, "`Button X`"); // X
m_buttons->SetControlExpression(3, "`Button Y`"); // Y
m_buttons->SetControlExpression(4, "`Bumper R`"); // Z
m_buttons->SetControlExpression(5, "`Menu`"); // Start
m_buttons->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button A`"); // A
m_buttons->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button B`"); // B
m_buttons->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button X`"); // X
m_buttons->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button Y`"); // Y
m_buttons->SetControlExpression(4, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Bumper R`"); // Z
m_buttons->SetControlExpression(5, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Menu`"); // Start
#else
m_buttons->SetControlExpression(0, "`Button A`"); // A
m_buttons->SetControlExpression(1, "`Button B`"); // B
Expand All @@ -197,16 +197,16 @@ void GCPad::LoadDefaults(const ControllerInterface& ciface)

#if _UWP
// D-Pad
m_dpad->SetControlExpression(0, "`Pad N`"); // Up
m_dpad->SetControlExpression(1, "`Pad S`"); // Down
m_dpad->SetControlExpression(2, "`Pad W`"); // Left
m_dpad->SetControlExpression(3, "`Pad E`"); // Right
m_dpad->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad N`"); // Up
m_dpad->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad S`"); // Down
m_dpad->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad W`"); // Left
m_dpad->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad E`"); // Right

// C Stick
m_c_stick->SetControlExpression(0, "`Right Y+`"); // Up
m_c_stick->SetControlExpression(1, "`Right Y-`"); // Down
m_c_stick->SetControlExpression(2, "`Right X-`"); // Left
m_c_stick->SetControlExpression(3, "`Right X+`"); // Right
m_c_stick->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right Y+`"); // Up
m_c_stick->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right Y-`"); // Down
m_c_stick->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right X-`"); // Left
m_c_stick->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right X+`"); // Right
#else
// D-Pad
m_dpad->SetControlExpression(0, "`T`"); // Up
Expand All @@ -215,20 +215,20 @@ void GCPad::LoadDefaults(const ControllerInterface& ciface)
m_dpad->SetControlExpression(3, "`H`"); // Right

// C Stick
m_c_stick->SetControlExpression(0, "`Right Y+`"); // Up
m_c_stick->SetControlExpression(1, "`Right Y-`"); // Down
m_c_stick->SetControlExpression(2, "`Right X-`"); // Left
m_c_stick->SetControlExpression(3, "`Right X+`"); // Right
m_c_stick->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right Y+`"); // Up
m_c_stick->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right Y-`"); // Down
m_c_stick->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right X-`"); // Left
m_c_stick->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right X+`"); // Right
// Modifier
m_c_stick->SetControlExpression(4, "`Ctrl`");
#endif

// Control Stick
#if _UWP
m_main_stick->SetControlExpression(0, "`Left Y+`"); // Up
m_main_stick->SetControlExpression(1, "`Left Y-`"); // Down
m_main_stick->SetControlExpression(2, "`Left X-`"); // Left
m_main_stick->SetControlExpression(3, "`Left X+`"); // Right
m_main_stick->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left Y+`"); // Up
m_main_stick->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left Y-`"); // Down
m_main_stick->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left X-`"); // Left
m_main_stick->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left X+`"); // Right
#elif _WIN32
m_main_stick->SetControlExpression(0, "`UP`"); // Up
m_main_stick->SetControlExpression(1, "`DOWN`"); // Down
Expand All @@ -255,13 +255,13 @@ void GCPad::LoadDefaults(const ControllerInterface& ciface)

#if _UWP
// Triggers
m_triggers->SetControlExpression(0, "`Trigger L`"); // L
m_triggers->SetControlExpression(2, "`Trigger L`"); // Analog-L
m_triggers->SetControlExpression(1, "`Trigger R`"); // R
m_triggers->SetControlExpression(3, "`Trigger R`"); // Analog-R
m_triggers->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Trigger L`"); // L
m_triggers->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Trigger L`"); // Analog-L
m_triggers->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Trigger R`"); // R
m_triggers->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Trigger R`"); // Analog-R

// Rumble
m_rumble->SetControlExpression(0, "`Rumble 0`");
m_rumble->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Rumble 0`");
#else
m_triggers->SetControlExpression(0, "`Q`"); // L
m_triggers->SetControlExpression(1, "`W`"); // R
Expand Down
14 changes: 7 additions & 7 deletions Source/Core/Core/HW/WiimoteEmu/Extension/Nunchuk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ constexpr std::array<u8, 2> nunchuk_button_bitmasks{{
Nunchuk::BUTTON_Z,
}};

Nunchuk::Nunchuk() : Extension1stParty(_trans("Nunchuk"))
Nunchuk::Nunchuk(const unsigned int index) : Extension1stParty(_trans("Nunchuk")), m_index(index)
{
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(BUTTONS_GROUP));
Expand Down Expand Up @@ -200,10 +200,10 @@ void Nunchuk::LoadDefaults(const ControllerInterface& ciface)
{
#if _UWP
// Stick
m_stick->SetControlExpression(0, "`Left Y+`"); // up
m_stick->SetControlExpression(1, "`Left Y-`"); // down
m_stick->SetControlExpression(2, "`Left X-`"); // left
m_stick->SetControlExpression(3, "`Left X+`"); // right
m_stick->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left Y+`"); // up
m_stick->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left Y-`"); // down
m_stick->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left X-`"); // left
m_stick->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Left X+`"); // right
#else
m_stick->SetControlExpression(0, "W"); // up
m_stick->SetControlExpression(1, "S"); // down
Expand All @@ -216,8 +216,8 @@ void Nunchuk::LoadDefaults(const ControllerInterface& ciface)

// Buttons
#if _UWP
m_buttons->SetControlExpression(0, "`Trigger L`"); // C
m_buttons->SetControlExpression(1, "`Trigger R`"); // Z
m_buttons->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Trigger L`"); // C
m_buttons->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Trigger R`"); // Z
#elif _WIN32
m_buttons->SetControlExpression(0, "LCONTROL"); // C
m_buttons->SetControlExpression(1, "LSHIFT"); // Z
Expand Down
3 changes: 2 additions & 1 deletion Source/Core/Core/HW/WiimoteEmu/Extension/Nunchuk.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ class Nunchuk : public Extension1stParty
};
static_assert(sizeof(CalibrationData) == 16, "Wrong size");

Nunchuk();
Nunchuk(unsigned int index);

void BuildDesiredExtensionState(DesiredExtensionState* target_state) override;
void Update(const DesiredExtensionState& target_state) override;
Expand Down Expand Up @@ -186,6 +186,7 @@ class Nunchuk : public Extension1stParty
ControllerEmu::Buttons* m_buttons;
ControllerEmu::AnalogStick* m_stick;
ControllerEmu::IMUAccelerometer* m_imu_accelerometer;
unsigned int m_index;

// Dynamics:
MotionState m_swing_state;
Expand Down
34 changes: 17 additions & 17 deletions Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ Wiimote::Wiimote(const unsigned int index) : m_index(index), m_bt_device_index(i
// Extension
groups.emplace_back(m_attachments = new ControllerEmu::Attachments(_trans("Extension")));
m_attachments->AddAttachment(std::make_unique<WiimoteEmu::None>());
m_attachments->AddAttachment(std::make_unique<WiimoteEmu::Nunchuk>());
m_attachments->AddAttachment(std::make_unique<WiimoteEmu::Nunchuk>(m_index));
m_attachments->AddAttachment(std::make_unique<WiimoteEmu::Classic>());
m_attachments->AddAttachment(std::make_unique<WiimoteEmu::Guitar>());
m_attachments->AddAttachment(std::make_unique<WiimoteEmu::Drums>());
Expand Down Expand Up @@ -668,8 +668,8 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface)
m_buttons->SetControlExpression(1, "`Right Click`");
#elif _UWP
// If we're running on UWP, we're likely on an Xbox. These defaults work for Xbox One & Series.
m_buttons->SetControlExpression(0, "`Button A`"); // A
m_buttons->SetControlExpression(1, "`Button B`"); // B
m_buttons->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button A`"); // A
m_buttons->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button B`"); // B
#else
// A
m_buttons->SetControlExpression(0, "`Click 0`");
Expand All @@ -678,10 +678,10 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface)
#endif

#if _UWP
m_buttons->SetControlExpression(2, "`Button X`");
m_buttons->SetControlExpression(3, "`Button Y`");
m_buttons->SetControlExpression(4, "`View`");
m_buttons->SetControlExpression(5, "`Menu`");
m_buttons->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button X`");
m_buttons->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Button Y`");
m_buttons->SetControlExpression(4, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:View`");
m_buttons->SetControlExpression(5, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Menu`");
#else
m_buttons->SetControlExpression(2, "`1`"); // 1
m_buttons->SetControlExpression(3, "`2`"); // 2
Expand All @@ -690,7 +690,7 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface)
#endif

#if _UWP
m_buttons->SetControlExpression(6, "`Menu & View`"); // Home
m_buttons->SetControlExpression(6, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Menu & View`"); // Home
#elif _WIN32
m_buttons->SetControlExpression(6, "RETURN"); // Home
#else
Expand All @@ -708,10 +708,10 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface)

#if _UWP
// Pointing (IR)
m_ir->SetControlExpression(0, "`Right Y+`");
m_ir->SetControlExpression(1, "`Right Y-`");
m_ir->SetControlExpression(2, "`Right X-`");
m_ir->SetControlExpression(3, "`Right X+`");
m_ir->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right Y+`");
m_ir->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right Y-`");
m_ir->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right X-`");
m_ir->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Right X+`");
#else
m_ir->SetControlExpression(0, "`Cursor Y-`");
m_ir->SetControlExpression(1, "`Cursor Y+`");
Expand All @@ -721,10 +721,10 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface)

// DPad
#if _UWP
m_dpad->SetControlExpression(0, "`Pad N`"); // Up
m_dpad->SetControlExpression(1, "`Pad S`"); // Down
m_dpad->SetControlExpression(2, "`Pad W`"); // Left
m_dpad->SetControlExpression(3, "`Pad E`"); // Right
m_dpad->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad N`"); // Up
m_dpad->SetControlExpression(1, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad S`"); // Down
m_dpad->SetControlExpression(2, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad W`"); // Left
m_dpad->SetControlExpression(3, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Pad E`"); // Right
#elif _WIN32
m_dpad->SetControlExpression(0, "UP"); // Up
m_dpad->SetControlExpression(1, "DOWN"); // Down
Expand Down Expand Up @@ -757,7 +757,7 @@ void Wiimote::LoadDefaults(const ControllerInterface& ciface)
m_imu_gyroscope->SetControlExpression(5, "`Gyro Yaw Right`");

#if _UWP
m_rumble->SetControlExpression(0, "`Rumble 0`");
m_rumble->SetControlExpression(0, "`WGInput/" + std::to_string(m_index) + "/Xbox One Game Controller:Rumble 0`");
#endif

// Enable Nunchuk:
Expand Down
4 changes: 2 additions & 2 deletions Source/Core/DolphinUWP/DolphinUWP.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@
<PropertyGroup Label="UserMacros">
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
<AppxPackageSigningEnabled>True</AppxPackageSigningEnabled>
<PackageCertificateThumbprint>C9F9E628DB2F5338D9F5D62D65BBD452442B5079</PackageCertificateThumbprint>
<PackageCertificateThumbprint>0C09AD43AECEDF33DB1E8FDD237EB5863271265A</PackageCertificateThumbprint>
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<GenerateTestArtifacts>True</GenerateTestArtifacts>
Expand Down Expand Up @@ -5140,4 +5140,4 @@
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.220110.5\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.CppWinRT.2.0.220110.5\build\native\Microsoft.Windows.CppWinRT.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.220110.5\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.CppWinRT.2.0.220110.5\build\native\Microsoft.Windows.CppWinRT.targets'))" />
</Target>
</Project>
</Project>
2 changes: 1 addition & 1 deletion Source/Core/DolphinUWP/Package.appxmanifest
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<Identity
Name="3143e227-cbe5-41c4-aaa9-cf40132a1b22"
Publisher="CN=SirMangler"
Version="1.1.2.0" />
Version="1.1.3.0" />
<mp:PhoneIdentity PhoneProductId="3143e227-cbe5-41c4-aaa9-cf40132a1b22" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>Dolphin Emulator</DisplayName>
Expand Down
15 changes: 7 additions & 8 deletions Source/Core/InputCommon/InputConfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,15 +153,14 @@ bool InputConfig::LoadConfig(InputClass type)
{
// Only load the default profile for the first controller and clear the others,
// otherwise they would all share the same mappings on the same (default) device
if (m_controllers.size() > 0)
//if (m_controllers.size() > 0)
//{
// m_controllers[0]->LoadDefaults(g_controller_interface);
// m_controllers[0]->UpdateReferences(g_controller_interface);
//}
for (size_t i = 0; i < m_controllers.size(); ++i)
{
m_controllers[0]->LoadDefaults(g_controller_interface);
m_controllers[0]->UpdateReferences(g_controller_interface);
}
for (size_t i = 1; i < m_controllers.size(); ++i)
{
// Calling the base version just clears all settings without overwriting them with a default
m_controllers[i]->EmulatedController::LoadDefaults(g_controller_interface);
m_controllers[i]->LoadDefaults(g_controller_interface);
m_controllers[i]->UpdateReferences(g_controller_interface);
}
return false;
Expand Down

0 comments on commit bc7ba2a

Please sign in to comment.