package controller import "gitlab.com/beoran/galago/os/linux" import "os" import "unsafe" import "syscall" import "fmt" func Ioctl(file * os.File, code uint32, pointer unsafe.Pointer) error { fmt.Printf("ioctl: %d %d %d\n", uintptr(file.Fd()), uintptr(code), uintptr(pointer)) _, _, errno := syscall.Syscall( syscall.SYS_IOCTL, uintptr(file.Fd()), uintptr(code), uintptr(pointer)) if (errno != 0) { return errno } return nil } func GetDriverVersion(file * os.File) (int32, error) { res := int32(0) data := unsafe.Pointer(&res) err := Ioctl(file, linux.EVIOCGVERSION, data) return res, err } func GetName(file * os.File) (string, error) { buffer := [256]byte{} err := Ioctl(file, linux.EVIOCGNAME(uintptr(len(buffer))), unsafe.Pointer(&buffer)) return string(buffer[0:len(buffer)]), err } func GetId(file * os.File) (linux.INPUT_id, error) { var result linux.INPUT_id err := Ioctl(file, linux.EVIOCGID, unsafe.Pointer(&result)) return result, err }