diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml
index c85d00df52..292a5e7172 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -56,7 +56,7 @@
A
B
- Start
+ START
X
Y
Z
@@ -68,7 +68,7 @@
2
-
+
- Home
+ HOME
Hide
Modifier
X
diff --git a/Source/Core/Core/HW/GCPadEmu.cpp b/Source/Core/Core/HW/GCPadEmu.cpp
index 3ba85c36ba..805e74ab1d 100644
--- a/Source/Core/Core/HW/GCPadEmu.cpp
+++ b/Source/Core/Core/HW/GCPadEmu.cpp
@@ -33,7 +33,7 @@ static const u16 trigger_bitmasks[] = {
static const u16 dpad_bitmasks[] = {PAD_BUTTON_UP, PAD_BUTTON_DOWN, PAD_BUTTON_LEFT,
PAD_BUTTON_RIGHT};
-static const char* const named_buttons[] = {"A", "B", "X", "Y", "Z", _trans("Start")};
+static const char* const named_buttons[] = {"A", "B", "X", "Y", "Z", "Start"};
static const char* const named_triggers[] = {
// i18n: The left trigger button (labeled L on real controllers)
@@ -50,7 +50,11 @@ GCPad::GCPad(const unsigned int index) : m_index(index)
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
for (unsigned int i = 0; i < sizeof(named_buttons) / sizeof(*named_buttons); ++i)
- m_buttons->controls.emplace_back(new ControllerEmu::Input(named_buttons[i]));
+ {
+ // i18n: The START/PAUSE button on GameCube controllers
+ const std::string& ui_name = (named_buttons[i] == "Start") ? _trans("START") : named_buttons[i];
+ m_buttons->controls.emplace_back(new ControllerEmu::Input(named_buttons[i], ui_name));
+ }
// sticks
groups.emplace_back(m_main_stick = new ControllerEmu::AnalogStick(
diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp
index 2cab625c0a..a9de8e2c6a 100644
--- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp
+++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp
@@ -64,7 +64,10 @@ Classic::Classic(ExtensionReg& reg) : Attachment(_trans("Classic"), reg)
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
for (auto& classic_button_name : classic_button_names)
- m_buttons->controls.emplace_back(new ControllerEmu::Input(classic_button_name));
+ {
+ const std::string& ui_name = (classic_button_name == "Home") ? "HOME" : classic_button_name;
+ m_buttons->controls.emplace_back(new ControllerEmu::Input(classic_button_name, ui_name));
+ }
// sticks
groups.emplace_back(m_left_stick = new ControllerEmu::AnalogStick(
diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp
index 156ccbc4d8..1f45614419 100644
--- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp
+++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp
@@ -257,7 +257,10 @@ Wiimote::Wiimote(const unsigned int index)
// buttons
groups.emplace_back(m_buttons = new ControllerEmu::Buttons(_trans("Buttons")));
for (auto& named_button : named_buttons)
- m_buttons->controls.emplace_back(new ControllerEmu::Input(named_button));
+ {
+ const std::string& ui_name = (named_button == "Home") ? "HOME" : named_button;
+ m_buttons->controls.emplace_back(new ControllerEmu::Input(named_button, ui_name));
+ }
// ir
// i18n: IR stands for infrared and refers to the pointer functionality of Wii Remotes
diff --git a/Source/Core/DolphinWX/Input/InputConfigDiag.cpp b/Source/Core/DolphinWX/Input/InputConfigDiag.cpp
index 02dc019ca7..f1e4e7e2f9 100644
--- a/Source/Core/DolphinWX/Input/InputConfigDiag.cpp
+++ b/Source/Core/DolphinWX/Input/InputConfigDiag.cpp
@@ -968,16 +968,16 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
for (const auto& control : group->controls)
{
wxStaticText* const label =
- new wxStaticText(parent, wxID_ANY, wxGetTranslation(StrToWxStr(control->name)));
+ new wxStaticText(parent, wxID_ANY, wxGetTranslation(StrToWxStr(control->ui_name)));
ControlButton* const control_button =
- new ControlButton(parent, control->control_ref.get(), control->name, 80);
+ new ControlButton(parent, control->control_ref.get(), control->ui_name, 80);
control_button->SetFont(small_font);
control_buttons.push_back(control_button);
if (std::find(exclude_groups.begin(), exclude_groups.end(), control_group->name) ==
exclude_groups.end() &&
- std::find(exclude_buttons.begin(), exclude_buttons.end(), control->name) ==
+ std::find(exclude_buttons.begin(), exclude_buttons.end(), control->ui_name) ==
exclude_buttons.end())
eventsink->control_buttons.push_back(control_button);
diff --git a/Source/Core/DolphinWX/Input/InputConfigDiagBitmaps.cpp b/Source/Core/DolphinWX/Input/InputConfigDiagBitmaps.cpp
index 0b25d685ef..e859dd4e2b 100644
--- a/Source/Core/DolphinWX/Input/InputConfigDiagBitmaps.cpp
+++ b/Source/Core/DolphinWX/Input/InputConfigDiagBitmaps.cpp
@@ -139,7 +139,7 @@ static void DrawButton(const std::vector& bitmasks, unsigned int b
gc->DrawRectangle(n * 12, (row == 0) ? 0 : (row * 11), 14, 12);
// text
- const std::string name = g->control_group->controls[(row * 8) + n]->name;
+ const std::string name = g->control_group->controls[(row * 8) + n]->ui_name;
// Matrix transformation needs to be disabled so we don't draw scaled/zoomed text.
wxGraphicsMatrix old_matrix = gc->GetTransform();
gc->SetTransform(null_matrix);
@@ -399,7 +399,7 @@ static void DrawControlGroupBox(wxGraphicsContext* gc, ControlGroupBox* g)
// text
// We don't want the text to be scaled/zoomed
gc->SetTransform(null_matrix);
- gc->DrawText(StrToWxStr(g->control_group->controls[n]->name), 3 * g->m_scale,
+ gc->DrawText(StrToWxStr(g->control_group->controls[n]->ui_name), 3 * g->m_scale,
(n * 12 + 1) * g->m_scale);
gc->SetTransform(scale_matrix);
}
@@ -437,9 +437,9 @@ static void DrawControlGroupBox(wxGraphicsContext* gc, ControlGroupBox* g)
// text
// We don't want the text to be scaled/zoomed
gc->SetTransform(null_matrix);
- gc->DrawText(StrToWxStr(g->control_group->controls[n + trigger_count]->name), 3 * g->m_scale,
- (n * 12 + 1) * g->m_scale);
- gc->DrawText(StrToWxStr(std::string(1, g->control_group->controls[n]->name[0])),
+ gc->DrawText(StrToWxStr(g->control_group->controls[n + trigger_count]->ui_name),
+ 3 * g->m_scale, (n * 12 + 1) * g->m_scale);
+ gc->DrawText(StrToWxStr(std::string(1, g->control_group->controls[n]->ui_name[0])),
(64 + 3) * g->m_scale, (n * 12 + 1) * g->m_scale);
gc->SetTransform(scale_matrix);
}
diff --git a/Source/Core/DolphinWX/TASInputDlg.cpp b/Source/Core/DolphinWX/TASInputDlg.cpp
index 941c472d8c..a822ee88a8 100644
--- a/Source/Core/DolphinWX/TASInputDlg.cpp
+++ b/Source/Core/DolphinWX/TASInputDlg.cpp
@@ -86,9 +86,9 @@ void TASInputDlg::CreateBaseLayout()
m_controls[0] = &m_main_stick.x_cont;
m_controls[1] = &m_main_stick.y_cont;
- m_a = CreateButton(_("A"));
+ m_a = CreateButton("A");
m_a.checkbox->SetClientData(&m_a);
- m_b = CreateButton(_("B"));
+ m_b = CreateButton("B");
m_b.checkbox->SetClientData(&m_b);
m_dpad_up = CreateButton(_("Up"));
m_dpad_up.checkbox->SetClientData(&m_dpad_up);
@@ -140,15 +140,15 @@ void TASInputDlg::CreateWiiLayout(int num)
wxStaticBoxSizer* const axisBox =
CreateAccelLayout(&m_x_cont, &m_y_cont, &m_z_cont, _("Orientation"));
- m_plus = CreateButton(_("+"));
+ m_plus = CreateButton("+");
m_plus.checkbox->SetClientData(&m_plus);
- m_minus = CreateButton(_("-"));
+ m_minus = CreateButton("-");
m_minus.checkbox->SetClientData(&m_minus);
- m_one = CreateButton(_("1"));
+ m_one = CreateButton("1");
m_one.checkbox->SetClientData(&m_one);
- m_two = CreateButton(_("2"));
+ m_two = CreateButton("2");
m_two.checkbox->SetClientData(&m_two);
- m_home = CreateButton(_("Home"));
+ m_home = CreateButton("HOME");
m_home.checkbox->SetClientData(&m_home);
m_cc_szr = CreateCCLayout();
@@ -188,9 +188,9 @@ void TASInputDlg::CreateWiiLayout(int num)
wxStaticBoxSizer* const nunchukaxisBox =
CreateAccelLayout(&m_nx_cont, &m_ny_cont, &m_nz_cont, _("Nunchuk orientation"));
- m_c = CreateButton(_("C"));
+ m_c = CreateButton("C");
m_c.checkbox->SetClientData(&m_c);
- m_z = CreateButton(_("Z"));
+ m_z = CreateButton("Z");
m_z.checkbox->SetClientData(&m_z);
for (Control* const control : m_controls)
@@ -246,9 +246,8 @@ void TASInputDlg::FinishLayout()
wxBoxSizer* TASInputDlg::CreateCCLayout()
{
- const std::array button_names{{_("Down"), _("Up"), _("Left"), _("Right"), _("A"),
- _("B"), _("X"), _("Y"), _("+"), _("-"), _("L"),
- _("R"), _("ZR"), _("ZL"), _("Home")}};
+ const std::array button_names{{_("Down"), _("Up"), _("Left"), _("Right"), "A", "B",
+ "X", "Y", "+", "-", "L", "R", "ZR", "ZL", "HOME"}};
for (size_t i = 0; i < button_names.size(); ++i)
{
m_cc_buttons[i] = CreateButton(button_names[i]);
@@ -386,17 +385,18 @@ void TASInputDlg::CreateGCLayout()
control->slider->Bind(wxEVT_RIGHT_UP, &TASInputDlg::OnRightClickSlider, this);
}
- m_x = CreateButton(_("X"));
+ m_x = CreateButton("X");
m_x.checkbox->SetClientData(&m_x);
- m_y = CreateButton(_("Y"));
+ m_y = CreateButton("Y");
m_y.checkbox->SetClientData(&m_y);
- m_l = CreateButton(_("L"));
+ m_l = CreateButton("L");
m_l.checkbox->SetClientData(&m_l);
- m_r = CreateButton(_("R"));
+ m_r = CreateButton("R");
m_r.checkbox->SetClientData(&m_r);
- m_z = CreateButton(_("Z"));
+ m_z = CreateButton("Z");
m_z.checkbox->SetClientData(&m_z);
- m_start = CreateButton(_("Start"));
+ // i18n: The START/PAUSE button on GameCube controllers
+ m_start = CreateButton(_("START"));
m_start.checkbox->SetClientData(&m_start);
const int space5 = FromDIP(5);
diff --git a/Source/Core/InputCommon/ControllerEmu/Control/Control.cpp b/Source/Core/InputCommon/ControllerEmu/Control/Control.cpp
index 56c4cba12d..3f5d00d822 100644
--- a/Source/Core/InputCommon/ControllerEmu/Control/Control.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/Control/Control.cpp
@@ -9,8 +9,14 @@
namespace ControllerEmu
{
+Control::Control(std::unique_ptr ref, const std::string& name_,
+ const std::string& ui_name_)
+ : control_ref(std::move(ref)), name(name_), ui_name(ui_name_)
+{
+}
+
Control::Control(std::unique_ptr ref, const std::string& name_)
- : control_ref(std::move(ref)), name(name_)
+ : Control(std::move(ref), name_, name_)
{
}
diff --git a/Source/Core/InputCommon/ControllerEmu/Control/Control.h b/Source/Core/InputCommon/ControllerEmu/Control/Control.h
index 1f7a64ed50..b34c843c5d 100644
--- a/Source/Core/InputCommon/ControllerEmu/Control/Control.h
+++ b/Source/Core/InputCommon/ControllerEmu/Control/Control.h
@@ -18,8 +18,11 @@ public:
std::unique_ptr const control_ref;
const std::string name;
+ const std::string ui_name;
protected:
+ Control(std::unique_ptr ref, const std::string& name,
+ const std::string& ui_name);
Control(std::unique_ptr ref, const std::string& name);
};
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/Control/Input.cpp b/Source/Core/InputCommon/ControllerEmu/Control/Input.cpp
index 8ff04e68a1..a213916a83 100644
--- a/Source/Core/InputCommon/ControllerEmu/Control/Input.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/Control/Input.cpp
@@ -10,6 +10,11 @@
namespace ControllerEmu
{
+Input::Input(const std::string& name_, const std::string& ui_name_)
+ : Control(std::make_unique(), name_, ui_name_)
+{
+}
+
Input::Input(const std::string& name_) : Control(std::make_unique(), name_)
{
}
diff --git a/Source/Core/InputCommon/ControllerEmu/Control/Input.h b/Source/Core/InputCommon/ControllerEmu/Control/Input.h
index 678514736e..dad90ed12e 100644
--- a/Source/Core/InputCommon/ControllerEmu/Control/Input.h
+++ b/Source/Core/InputCommon/ControllerEmu/Control/Input.h
@@ -12,6 +12,7 @@ namespace ControllerEmu
class Input : public Control
{
public:
+ Input(const std::string& name, const std::string& ui_name);
explicit Input(const std::string& name);
};
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
index e10af9ddaa..a534b7904f 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
@@ -54,9 +54,9 @@ void ModifySettingsButton::GetState()
associated_settings[i] = !associated_settings[i];
if (associated_settings[i])
- OSD::AddMessage(controls[i]->name + ": on");
+ OSD::AddMessage(controls[i]->ui_name + ": on");
else
- OSD::AddMessage(controls[i]->name + ": off");
+ OSD::AddMessage(controls[i]->ui_name + ": off");
threshold_exceeded[i] = true;
}