split src/devices/input into src/devices/input/{raw,wrap}

This commit is contained in:
bel
2023-03-24 19:51:38 -06:00
parent ab673a81f0
commit 38b00e55b0
16 changed files with 161 additions and 159 deletions

View File

@@ -2,63 +2,16 @@ package input
import (
"context"
"os"
"strconv"
"syscall"
"mayhem-party/src/device/input/raw"
"mayhem-party/src/device/input/wrap"
)
type Input interface {
Read() []Button
Read() []wrap.Button
Close()
}
func New(ctx context.Context) Input {
return newNew(ctx)()
}
func newNew(ctx context.Context) func() Input {
maker := newSourceFunc()
if os.Getenv("INPUT_BUFFERED") == "true" {
oldMaker := maker
maker = func() Input {
return NewBuffered(ctx, oldMaker())
}
}
if p := os.Getenv("INPUT_REMAP_FILE"); p != "" {
oldMaker := maker
maker = func() Input {
return NewRemapFromFile(oldMaker(), p)
}
}
if os.Getenv("INPUT_REFRESH_ON_SIGUSR1") != "" {
oldMaker := maker
c := NewRefreshCh(syscall.SIGUSR1)
maker = func() Input {
return NewRefresh(oldMaker, c)
}
}
return maker
}
func newSourceFunc() func() Input {
if os.Getenv("INPUT_KEYBOARD") == "true" {
singletonKeyboard := NewKeyboard()
return func() Input {
return singletonKeyboard
}
}
if port, _ := strconv.Atoi(os.Getenv("INPUT_UDP")); port != 0 {
singletonUDP := NewUDP(port)
return func() Input {
return singletonUDP
}
}
return func() Input {
generator := randomCharFromRange('a', 'g')
if p, ok := os.LookupEnv("INPUT_RANDOM_WEIGHT_FILE"); ok && len(p) > 0 {
generator = randomCharFromWeightFile(p)
}
return NewRandom(generator)
}
src := raw.New(ctx)
return wrap.New(ctx, src)
}