Implement combined axis logic and tests.

This commit is contained in:
Anna Rose Wiggins 2025-07-25 17:51:24 -04:00
parent a7e78c33f3
commit 49292ff13f
5 changed files with 192 additions and 65 deletions

View file

@ -26,26 +26,6 @@ func NewRuleTargetAxis(device_name string,
inverted bool,
deadzoneStart int32,
deadzoneEnd int32) (*RuleTargetAxis, error) {
return NewRuleTargetAxisPartial(
device_name,
device,
axis,
inverted,
deadzoneStart,
deadzoneEnd,
AxisValueMin,
AxisValueMax,
)
}
func NewRuleTargetAxisPartial(device_name string,
device Device,
axis evdev.EvCode,
inverted bool,
deadzoneStart int32,
deadzoneEnd int32,
minOutput int32,
maxOutput int32) (*RuleTargetAxis, error) {
info, err := device.AbsInfos()
@ -83,6 +63,8 @@ func NewRuleTargetAxisPartial(device_name string,
Device: device,
Axis: axis,
Inverted: inverted,
OutputMin: AxisValueMin,
OutputMax: AxisValueMax,
DeadzoneStart: deadzoneStart,
DeadzoneEnd: deadzoneEnd,
deadzoneSize: deadzoneSize,
@ -125,7 +107,7 @@ func (target *RuleTargetAxis) MatchEventDeviceAndCode(device Device, event *evde
// TODO: Add tests
func (target *RuleTargetAxis) InDeadZone(value int32) bool {
return value >= target.DeadzoneStart && value <= target.DeadzoneEnd
return target.deadzoneSize > 0 && value >= target.DeadzoneStart && value <= target.DeadzoneEnd
}
// GetAxisStrength returns a float between 0.0 and 1.0, representing the proportional