diff options
Diffstat (limited to 'Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp')
| -rw-r--r-- | Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp index bbd15ad831..7963fc22d1 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp @@ -68,7 +68,7 @@ QString DetectExpression(QPushButton* button, ciface::Core::DeviceContainer& dev // Avoid that the button press itself is registered as an event Common::SleepCurrentThread(50); - const auto [device, input] = device_container.DetectInput(INPUT_DETECT_TIME, device_strings); + const auto detections = device_container.DetectInput(INPUT_DETECT_TIME, device_strings); const auto timer = new QTimer(button); @@ -83,14 +83,24 @@ QString DetectExpression(QPushButton* button, ciface::Core::DeviceContainer& dev button->setText(old_text); - if (!input) - return {}; + QString full_expression; - ciface::Core::DeviceQualifier device_qualifier; - device_qualifier.FromDevice(device.get()); + for (auto [device, input] : detections) + { + ciface::Core::DeviceQualifier device_qualifier; + device_qualifier.FromDevice(device.get()); + + if (!full_expression.isEmpty()) + full_expression += QChar::fromLatin1('+'); + + full_expression += MappingCommon::GetExpressionForControl( + QString::fromStdString(input->GetName()), device_qualifier, default_device, quote); + } + + if (detections.size() > 1) + return QStringLiteral("@(%1)").arg(std::move(full_expression)); - return MappingCommon::GetExpressionForControl(QString::fromStdString(input->GetName()), - device_qualifier, default_device, quote); + return full_expression; } void TestOutput(QPushButton* button, OutputReference* reference) |
