From ab8698ea9a5a3fe051b1b97cc6f2f339a5b6076f Mon Sep 17 00:00:00 2001 From: Anna Rose Wiggins Date: Fri, 25 Jul 2025 17:56:21 -0400 Subject: [PATCH] Add config settings for combined axis. --- internal/config/make_rules.go | 25 +++++++++++++++++++++++++ internal/config/schema.go | 2 ++ internal/config/variables.go | 1 + 3 files changed, 28 insertions(+) diff --git a/internal/config/make_rules.go b/internal/config/make_rules.go index 7c1365c..647987c 100644 --- a/internal/config/make_rules.go +++ b/internal/config/make_rules.go @@ -49,6 +49,8 @@ func (parser *ConfigParser) BuildRules(pInputDevs map[string]*evdev.InputDevice, newRule, err = makeMappingRuleLatched(ruleConfig, pDevs, vDevs, base) case RuleTypeAxis: newRule, err = makeMappingRuleAxis(ruleConfig, pDevs, vDevs, base) + case RuleTypeAxisCombined: + newRule, err = makeMappingRuleAxisCombined(ruleConfig, pDevs, vDevs, base) case RuleTypeAxisToButton: newRule, err = makeMappingRuleAxisToButton(ruleConfig, pDevs, vDevs, base) case RuleTypeAxisToRelaxis: @@ -146,6 +148,29 @@ func makeMappingRuleAxis(ruleConfig RuleConfig, return mappingrules.NewMappingRuleAxis(base, input, output), nil } +func makeMappingRuleAxisCombined(ruleConfig RuleConfig, + pDevs map[string]Device, + vDevs map[string]Device, + base mappingrules.MappingRuleBase) (*mappingrules.MappingRuleAxisCombined, error) { + + inputLower, err := makeRuleTargetAxis(ruleConfig.InputLower, pDevs) + if err != nil { + return nil, err + } + + inputUpper, err := makeRuleTargetAxis(ruleConfig.InputUpper, pDevs) + if err != nil { + return nil, err + } + + output, err := makeRuleTargetAxis(ruleConfig.Output, vDevs) + if err != nil { + return nil, err + } + + return mappingrules.NewMappingRuleAxisCombined(base, inputLower, inputUpper, output), nil +} + func makeMappingRuleAxisToButton(ruleConfig RuleConfig, pDevs map[string]Device, vDevs map[string]Device, diff --git a/internal/config/schema.go b/internal/config/schema.go index 5f52756..afb4940 100644 --- a/internal/config/schema.go +++ b/internal/config/schema.go @@ -32,6 +32,8 @@ type RuleConfig struct { Name string `yaml:"name,omitempty"` Type string `yaml:"type"` Input RuleTargetConfig `yaml:"input,omitempty"` + InputLower RuleTargetConfig `yaml:"input_lower,omitempty"` + InputUpper RuleTargetConfig `yaml:"input_upper,omitempty"` Inputs []RuleTargetConfig `yaml:"inputs,omitempty"` Output RuleTargetConfig `yaml:"output"` Modes []string `yaml:"modes,omitempty"` diff --git a/internal/config/variables.go b/internal/config/variables.go index fa60e6c..9c126bc 100644 --- a/internal/config/variables.go +++ b/internal/config/variables.go @@ -12,6 +12,7 @@ const ( RuleTypeButtonCombo = "button-combo" RuleTypeLatched = "button-latched" RuleTypeAxis = "axis" + RuleTypeAxisCombined = "axis-combined" RuleTypeModeSelect = "mode-select" RuleTypeAxisToButton = "axis-to-button" RuleTypeAxisToRelaxis = "axis-to-relaxis"