split src/devices/input into src/devices/input/{raw,wrap}
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user