Big Refactor (#2)

Refactor Everything.

Co-authored-by: Anna Rose Wiggins <annabunches@gmail.com>
Co-committed-by: Anna Rose Wiggins <annabunches@gmail.com>
This commit is contained in:
Anna Rose Wiggins 2025-07-08 03:26:24 +00:00 committed by Anna Rose
parent a0949e719f
commit ff38db6596
21 changed files with 413 additions and 309 deletions

View file

@ -1,6 +1,7 @@
package mappingrules
import (
"errors"
"slices"
"git.annabunches.net/annabunches/joyful/internal/logger"
@ -8,34 +9,35 @@ import (
)
type RuleTargetModeSelect struct {
RuleTargetBase
ModeSelect []string
Modes []string
}
func NewRuleTargetModeSelect(modes []string) *RuleTargetModeSelect {
return &RuleTargetModeSelect{
RuleTargetBase: NewRuleTargetBase("", nil, 0, false),
ModeSelect: modes,
func NewRuleTargetModeSelect(modes []string) (*RuleTargetModeSelect, error) {
if len(modes) == 0 {
return nil, errors.New("cannot create RuleTargetModeSelect: mode list is empty")
}
return &RuleTargetModeSelect{
Modes: modes,
}, nil
}
// RuleTargetModeSelect doesn't make sense as an input type
func (target *RuleTargetModeSelect) NormalizeValue(value int32) int32 {
func (target *RuleTargetModeSelect) NormalizeValue(_ int32) int32 {
return -1
}
func (target *RuleTargetModeSelect) CreateEvent(value int32, mode *string) *evdev.InputEvent {
if value == 0 {
return nil
}
func (target *RuleTargetModeSelect) CreateEvent(_ int32, mode *string) *evdev.InputEvent {
index := 0
if currentMode := slices.Index(target.ModeSelect, *mode); currentMode != -1 {
if currentMode := slices.Index(target.Modes, *mode); currentMode != -1 {
// find the next mode
index = (currentMode + 1) % len(target.ModeSelect)
index = (currentMode + 1) % len(target.Modes)
}
*mode = target.ModeSelect[index]
*mode = target.Modes[index]
logger.Logf("Mode changed to '%s'", *mode)
return nil
}
func (target *RuleTargetModeSelect) MatchEvent(_ *evdev.InputDevice, _ *evdev.InputEvent) bool {
return false
}