diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2019-10-23 17:20:42 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2020-09-25 20:29:18 -0500 |
| commit | b3acc7403f33033bfce6db92ea4b8ec6fc968665 (patch) | |
| tree | 3b9a068a5d9ccdead090880b4781a674cd4c361b /Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp | |
| parent | e6ba495486b2c7ac337fa4ecd62597a0f9a56e51 (diff) | |
InputCommon: Support detecting combinations of inputs. (Hotkeys)
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) |
