diff --git a/client/go.mod b/client/go.mod index 09f0344..4b28a0a 100644 --- a/client/go.mod +++ b/client/go.mod @@ -3,6 +3,8 @@ module svitan.dev/keys/client go 1.24.1 require ( - github.com/robotn/gohook v0.42.0 // indirect - github.com/vcaesar/keycode v0.10.1 // indirect + github.com/gorilla/websocket v1.5.3 + github.com/robotn/gohook v0.42.0 ) + +require github.com/vcaesar/keycode v0.10.1 // indirect diff --git a/client/go.sum b/client/go.sum index 1a682cf..9e4f028 100644 --- a/client/go.sum +++ b/client/go.sum @@ -1,4 +1,8 @@ +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/robotn/gohook v0.42.0 h1:y241yJtt1JvObVwoS2kXJ5OsoIsOoVkp/SPqmCAUhJg= github.com/robotn/gohook v0.42.0/go.mod h1:PYgH0f1EaxhCvNSqIVTfo+SIUh1MrM2Uhe2w7SvFJDE= github.com/vcaesar/keycode v0.10.1 h1:0DesGmMAPWpYTCYddOFiCMKCDKgNnwiQa2QXindVUHw= github.com/vcaesar/keycode v0.10.1/go.mod h1:JNlY7xbKsh+LAGfY2j4M3znVrGEm5W1R8s/Uv6BJcfQ= +github.com/vcaesar/tt v0.20.1 h1:D/jUeeVCNbq3ad8M7hhtB3J9x5RZ6I1n1eZ0BJp7M+4= +github.com/vcaesar/tt v0.20.1/go.mod h1:cH2+AwGAJm19Wa6xvEa+0r+sXDJBT0QgNQey6mwqLeU= diff --git a/client/main.go b/client/main.go index 878e21f..25431d0 100644 --- a/client/main.go +++ b/client/main.go @@ -2,7 +2,10 @@ package main import ( "fmt" + "net/url" + "os" + "github.com/gorilla/websocket" hook "github.com/robotn/gohook" ) @@ -16,7 +19,45 @@ const ( REG_END = 255 ) +const HOST = "localhost:8080" + +var u = url.URL{Scheme: "ws", Host: HOST, Path: "/keys"} + func main() { + var conn *websocket.Conn + var err error + var tries = 0 + for { + conn, _, err = websocket.DefaultDialer.Dial(u.String(), nil) + if err != nil { + fmt.Printf("conn err %v\n", err) + tries += 1 + if tries >= 3 { + fmt.Printf("returning") + return + } + } else { + fmt.Printf("breaking") + break + } + } + defer conn.Close() + + go func() { + defer os.Exit(0) + for { + kind, _, err := conn.ReadMessage() + if err != nil { + fmt.Printf("got read err %v\n", err) + return + } + if kind == websocket.CloseMessage { + fmt.Printf("got close message") + return + } + } + }() + evChan := hook.Start() defer hook.End() buff := make([]byte, 64) @@ -71,11 +112,13 @@ func main() { if REG_START <= ev.Keychar && ev.Keychar <= REG_END { if ev.Kind == hook.KeyDown { - fmt.Printf("adding pesky %d (bcs %d)", ev.Keycode, ev.Rawcode) buff = append(buff, byte(ev.Keychar)) } } - fmt.Printf("'%s'\n", buff) + if len(buff) >= 32 { + conn.WriteMessage(websocket.TextMessage, buff[:32]) + buff = buff[32:] + } } }