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:
parent
a0949e719f
commit
ff38db6596
21 changed files with 413 additions and 309 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue