(WIP) Implement axis-to-relaxis repeats; similar to buttons but for discretized relative axis inputs. (i.e. mousewheel)

This commit is contained in:
Anna Rose Wiggins 2025-07-15 00:46:07 -04:00
parent 8bbb84da85
commit 0915ea059a
10 changed files with 224 additions and 18 deletions

View file

@ -0,0 +1,46 @@
package mappingrules
import (
"github.com/holoplot/go-evdev"
)
type RuleTargetRelaxis struct {
DeviceName string
Device RuleTargetDevice
Axis evdev.EvCode
Inverted bool
}
func NewRuleTargetRelaxis(device_name string,
device RuleTargetDevice,
axis evdev.EvCode,
inverted bool) (*RuleTargetRelaxis, error) {
return &RuleTargetRelaxis{
DeviceName: device_name,
Device: device,
Axis: axis,
Inverted: inverted,
}, nil
}
// NormalizeValue takes a raw input value and converts it to a value suitable for output.
//
// Relative axes are currently only supported for output.
// TODO: make this have an error return?
func (target *RuleTargetRelaxis) NormalizeValue(value int32) int32 {
return 0
}
func (target *RuleTargetRelaxis) CreateEvent(value int32, mode *string) *evdev.InputEvent {
return &evdev.InputEvent{
Type: evdev.EV_REL,
Code: target.Axis,
Value: value,
}
}
// Relative axis is only supported for output.
func (target *RuleTargetRelaxis) MatchEvent(device RuleTargetDevice, event *evdev.InputEvent) bool {
return false
}