From a707e8c6cc1d8c581b2612cf53343b40a56c71a5 Mon Sep 17 00:00:00 2001 From: Aleksey Lobanov Date: Fri, 25 Mar 2016 01:57:09 +0300 Subject: [PATCH] Added keyboard event handling skeleton --- src/main.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main.go diff --git a/src/main.go b/src/main.go new file mode 100644 index 0000000..1f69506 --- /dev/null +++ b/src/main.go @@ -0,0 +1,40 @@ +// main.go +package main + +import ( + "fmt" + "log" + "os/exec" + "strconv" + "time" +) + +const ( + SLEEP_TIME = 3 * time.Second + KEYBOARD_BUFER_SIZE = 10000 +) + +func main() { + + keyboard_id := 14 + cmd := exec.Command("xinput", "test", strconv.Itoa(keyboard_id)) + + stdout, err := cmd.StdoutPipe() + if err != nil { + log.Fatal(err) + } + if err := cmd.Start(); err != nil { + log.Fatal(err) + } + + buf := make([]byte, KEYBOARD_BUFER_SIZE) + for { + n, err := stdout.Read(buf) + if err != nil { + log.Fatal(err) + } + // processing buf here + fmt.Println(len(buf), n) + time.Sleep(5 * time.Second) + } +}