diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/hid/controllers/npad.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index e311bc18c..c4b26196a 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp | |||
| @@ -224,6 +224,19 @@ void Controller_NPad::OnInit() { | |||
| 224 | player.connected}; | 224 | player.connected}; |
| 225 | }); | 225 | }); |
| 226 | 226 | ||
| 227 | // Connect the Player 1 or Handheld controller if none are connected. | ||
| 228 | if (std::none_of(connected_controllers.begin(), connected_controllers.end(), | ||
| 229 | [](const ControllerHolder& controller) { return controller.is_connected; })) { | ||
| 230 | const auto controller = MapSettingsTypeToNPad(Settings::values.players[0].controller_type); | ||
| 231 | if (controller == NPadControllerType::Handheld) { | ||
| 232 | Settings::values.players[HANDHELD_INDEX].connected = true; | ||
| 233 | connected_controllers[HANDHELD_INDEX] = {controller, true}; | ||
| 234 | } else { | ||
| 235 | Settings::values.players[0].connected = true; | ||
| 236 | connected_controllers[0] = {controller, true}; | ||
| 237 | } | ||
| 238 | } | ||
| 239 | |||
| 227 | // Account for handheld | 240 | // Account for handheld |
| 228 | if (connected_controllers[HANDHELD_INDEX].is_connected) { | 241 | if (connected_controllers[HANDHELD_INDEX].is_connected) { |
| 229 | connected_controllers[HANDHELD_INDEX].type = NPadControllerType::Handheld; | 242 | connected_controllers[HANDHELD_INDEX].type = NPadControllerType::Handheld; |