diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/yuzu/configuration/configure_input.cpp | 63 |
1 files changed, 46 insertions, 17 deletions
diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index cd7520f29..af735196d 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp | |||
| @@ -166,34 +166,63 @@ void ConfigureInput::restoreDefaults() { | |||
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | void ConfigureInput::updateButtonLabels() { | 168 | void ConfigureInput::updateButtonLabels() { |
| 169 | QString non_keyboard(tr("[non-keyboard]")); | 169 | QString unknown_mapping(tr("[unknown]")); |
| 170 | 170 | ||
| 171 | auto KeyToText = [&non_keyboard](const Common::ParamPackage& param) { | 171 | auto ButtonToText = [&unknown_mapping](const Common::ParamPackage& param) { |
| 172 | if (!param.Has("engine")) { | 172 | if (!param.Has("engine")) { |
| 173 | return QString("[not set]"); | 173 | return QString("[not set]"); |
| 174 | } else if (param.Get("engine", "") != "keyboard") { | 174 | } else if (param.Get("engine", "") == "keyboard") { |
| 175 | return non_keyboard; | ||
| 176 | } else { | ||
| 177 | return getKeyName(param.Get("code", 0)); | 175 | return getKeyName(param.Get("code", 0)); |
| 176 | } else if (param.Get("engine", "") == "sdl") { | ||
| 177 | QString text = QString("Joystick %1").arg(param.Get("joystick", "").c_str()); | ||
| 178 | if (param.Has("hat")) { | ||
| 179 | text += QString(" Hat %1 %2") | ||
| 180 | .arg(param.Get("hat", "").c_str(), param.Get("direction", "").c_str()); | ||
| 181 | } | ||
| 182 | if (param.Has("axis")) { | ||
| 183 | text += QString(" Axis %1%2") | ||
| 184 | .arg(param.Get("axis", "").c_str(), param.Get("direction", "").c_str()); | ||
| 185 | } | ||
| 186 | if (param.Has("button")) { | ||
| 187 | text += QString(" Button %1").arg(param.Get("button", "").c_str()); | ||
| 188 | } | ||
| 189 | return text; | ||
| 190 | } else { | ||
| 191 | return unknown_mapping; | ||
| 192 | } | ||
| 193 | }; | ||
| 194 | auto AnalogToText = [&unknown_mapping, &ButtonToText](const Common::ParamPackage& param, | ||
| 195 | const std::string& dir) { | ||
| 196 | if (!param.Has("engine")) { | ||
| 197 | return QString("[not set]"); | ||
| 198 | } else if (param.Get("engine", "") == "analog_from_button") { | ||
| 199 | return ButtonToText(Common::ParamPackage{param.Get(dir, "")}); | ||
| 200 | } else if (param.Get("engine", "") == "sdl") { | ||
| 201 | if (dir == "modifier") { | ||
| 202 | return QString("[unused]"); | ||
| 203 | } | ||
| 204 | |||
| 205 | QString text = QString("Joystick %1").arg(param.Get("joystick", "").c_str()); | ||
| 206 | if (dir == "left" || dir == "right") { | ||
| 207 | text += QString(" Axis %1").arg(param.Get("axis_x", "").c_str()); | ||
| 208 | } else if (dir == "up" || dir == "down") { | ||
| 209 | text += QString(" Axis %1").arg(param.Get("axis_y", "").c_str()); | ||
| 210 | } | ||
| 211 | return text; | ||
| 212 | } else { | ||
| 213 | return unknown_mapping; | ||
| 178 | } | 214 | } |
| 179 | }; | 215 | }; |
| 180 | 216 | ||
| 181 | for (int button = 0; button < Settings::NativeButton::NumButtons; button++) { | 217 | for (int button = 0; button < Settings::NativeButton::NumButtons; button++) { |
| 182 | button_map[button]->setText(KeyToText(buttons_param[button])); | 218 | button_map[button]->setText(ButtonToText(buttons_param[button])); |
| 183 | } | 219 | } |
| 184 | 220 | ||
| 185 | for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { | 221 | for (int analog_id = 0; analog_id < Settings::NativeAnalog::NumAnalogs; analog_id++) { |
| 186 | if (analogs_param[analog_id].Get("engine", "") != "analog_from_button") { | 222 | for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { |
| 187 | for (QPushButton* button : analog_map_buttons[analog_id]) { | 223 | if (analog_map_buttons[analog_id][sub_button_id]) { |
| 188 | if (button) | 224 | analog_map_buttons[analog_id][sub_button_id]->setText( |
| 189 | button->setText(non_keyboard); | 225 | AnalogToText(analogs_param[analog_id], analog_sub_buttons[sub_button_id])); |
| 190 | } | ||
| 191 | } else { | ||
| 192 | for (int sub_button_id = 0; sub_button_id < ANALOG_SUB_BUTTONS_NUM; sub_button_id++) { | ||
| 193 | Common::ParamPackage param( | ||
| 194 | analogs_param[analog_id].Get(analog_sub_buttons[sub_button_id], "")); | ||
| 195 | if (analog_map_buttons[analog_id][sub_button_id]) | ||
| 196 | analog_map_buttons[analog_id][sub_button_id]->setText(KeyToText(param)); | ||
| 197 | } | 226 | } |
| 198 | } | 227 | } |
| 199 | analog_map_stick[analog_id]->setText("Set Analog Stick"); | 228 | analog_map_stick[analog_id]->setText("Set Analog Stick"); |