summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp b/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp
index 8c9060e69c..b49d4b8dce 100644
--- a/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp
+++ b/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp
@@ -219,6 +219,33 @@ public:
virtual operator std::string() { return ""; }
};
+class DummyExpression : public ExpressionNode
+{
+public:
+ std::string name;
+
+ DummyExpression(const std::string& name_) : name(name_) {}
+
+ ControlState GetValue() override
+ {
+ return 0.0;
+ }
+
+ void SetValue(ControlState value) override
+ {
+ }
+
+ int CountNumControls() override
+ {
+ return 0;
+ }
+
+ operator std::string() override
+ {
+ return "`" + name + "`";
+ }
+};
+
class ControlExpression : public ExpressionNode
{
public:
@@ -416,7 +443,10 @@ private:
{
Device::Control *control = finder.FindControl(tok.qualifier);
if (control == nullptr)
- return EXPRESSION_PARSE_NO_DEVICE;
+ {
+ *expr_out = new DummyExpression(tok.qualifier);
+ return EXPRESSION_PARSE_SUCCESS;
+ }
*expr_out = new ControlExpression(tok.qualifier, control);
return EXPRESSION_PARSE_SUCCESS;