* Move all physical device initialization logic to main functions

* Move all virtual device initialization to virtualbuffer package.
* Factor out common eventcode helper logic into a new package.
This commit is contained in:
Anna Rose Wiggins 2025-08-11 14:54:02 -04:00
parent 1b374bccc6
commit 727985f91c
17 changed files with 777 additions and 771 deletions

View file

@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"git.annabunches.net/annabunches/joyful/internal/eventcodes"
"git.annabunches.net/annabunches/joyful/internal/mappingrules"
"github.com/holoplot/go-evdev"
)
@ -14,7 +15,7 @@ func makeRuleTargetButton(targetConfig RuleTargetConfigButton, devs map[string]D
return nil, fmt.Errorf("non-existent device '%s'", targetConfig.Device)
}
eventCode, err := parseCodeButton(targetConfig.Button)
eventCode, err := eventcodes.ParseCodeButton(targetConfig.Button)
if err != nil {
return nil, err
}
@ -37,7 +38,7 @@ func makeRuleTargetAxis(targetConfig RuleTargetConfigAxis, devs map[string]Devic
return nil, errors.New("deadzone_end must be greater than deadzone_start")
}
eventCode, err := parseCode(targetConfig.Axis, CodePrefixAxis)
eventCode, err := eventcodes.ParseCode(targetConfig.Axis, eventcodes.CodePrefixAxis)
if err != nil {
return nil, err
}
@ -63,7 +64,7 @@ func makeRuleTargetRelaxis(targetConfig RuleTargetConfigRelaxis, devs map[string
return nil, fmt.Errorf("non-existent device '%s'", targetConfig.Device)
}
eventCode, err := parseCode(targetConfig.Axis, CodePrefixRelaxis)
eventCode, err := eventcodes.ParseCode(targetConfig.Axis, eventcodes.CodePrefixRelaxis)
if err != nil {
return nil, err
}
@ -83,11 +84,6 @@ func makeRuleTargetModeSelect(targetConfig RuleTargetConfigModeSelect, allModes
return mappingrules.NewRuleTargetModeSelect(targetConfig.Modes)
}
// hasError exists solely to switch on errors in case statements
func hasError(_ any, err error) bool {
return err != nil
}
// calculateDeadzones produces the deadzone start and end values in absolute terms
// TODO: on the one hand, this logic feels betten encapsulated in mappingrules. On the other hand,
// passing even more parameters to NewRuleTargetAxis feels terrible