summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2019-10-23 17:20:42 -0500
committerJordan Woyak <jordan.woyak@gmail.com>2020-09-25 20:29:18 -0500
commitb3acc7403f33033bfce6db92ea4b8ec6fc968665 (patch)
tree3b9a068a5d9ccdead090880b4781a674cd4c361b /Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp
parente6ba495486b2c7ac337fa4ecd62597a0f9a56e51 (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.cpp24
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)