Files
mayhem-party/src/device/input/wrap/wrap.go

46 lines
878 B
Go

package wrap
import (
"context"
"mayhem-party/src/device/input/button"
"mayhem-party/src/device/input/raw"
"os"
)
var (
FlagBuffered = os.Getenv("WRAP_BUFFERED") == "true"
FlagRemapFile = os.Getenv("WRAP_REMAP_FILE")
FlagRefreshOnSigUsr1 = os.Getenv("WRAP_REFRESH_ON_SIGUSR1") == "true"
)
type Wrap interface {
Read() []button.Button
Close()
CloseWrap() raw.Raw
}
func New(ctx context.Context, srcFunc func() button.Parser) Wrap {
maker := func() Wrap {
return srcFunc()
}
if FlagBuffered {
oldMaker := maker
maker = func() Wrap {
return NewBuffered(ctx, oldMaker())
}
}
if FlagRemapFile != "" {
oldMaker := maker
maker = func() Wrap {
return NewRemapFromFile(oldMaker(), FlagRemapFile)
}
}
if FlagRefreshOnSigUsr1 {
oldMaker := maker
maker = func() Wrap {
return NewRefresh(ctx, oldMaker)
}
}
return maker()
}