package input import ( "fmt" "github.com/bendahl/uinput" ) type KeyboardUinputWrapper struct { keyboard uinput.Keyboard } type MouseUinputWrapper struct { mouse uinput.Mouse touchpad uinput.TouchPad } func (uinputKeyboard *KeyboardUinputWrapper) Init() error { kbd, err := uinput.CreateKeyboard("/dev/uinput", []byte("magic4linux-keyboard")) if err != nil { panic(err) } uinputKeyboard.keyboard = kbd return nil } func (uinputMouse *MouseUinputWrapper) Init() error { mouse, err := uinput.CreateMouse("/dev/uinput", []byte("magic4linux-mouse")) if err != nil { panic(err) } uinputMouse.mouse = mouse // TODO resolution tp, err := uinput.CreateTouchPad("/dev/uinput", []byte("magic4linux-touchpad"), 0, 1920, 0, 1080) if err != nil { panic(err) } uinputMouse.touchpad = tp return nil } func (uinputKeyboard KeyboardUinputWrapper) KeyDown(key int) error { return uinputKeyboard.keyboard.KeyDown(key) } func (uinputKeyboard KeyboardUinputWrapper) KeyUp(key int) error { return uinputKeyboard.keyboard.KeyUp(key) } func (uinputKeyboard KeyboardUinputWrapper) Close() error { return uinputKeyboard.keyboard.Close() } func (uinputMouse MouseUinputWrapper) Move(x, y int32) error { return uinputMouse.touchpad.MoveTo(x, y) } func (uinputMouse MouseUinputWrapper) LeftPress() error { fmt.Println("Left!!!!") return uinputMouse.mouse.LeftPress() } func (uinputMouse MouseUinputWrapper) LeftRelease() error { return uinputMouse.mouse.LeftRelease() } func (uinputMouse MouseUinputWrapper) Wheel(horizontal bool, delta int32) error { return uinputMouse.mouse.Wheel(horizontal, delta) } func (uinputMouse MouseUinputWrapper) Close() error { return uinputMouse.mouse.Close() }