/
kybd.go
executable file
·137 lines (126 loc) · 2.84 KB
/
kybd.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package gkeyboard
import (
"fmt"
"github.com/go-vgo/robotgo"
term "github.com/nsf/termbox-go"
)
// https://github.com/go-xkg/xkg // linux x11 only ?
// https://github.com/MarinX/keylogger // linux(x11) only
// github.com/vence722/inputhook // windows only
// https://github.com/azul3d/engine/keyboard
// https://github.com/eiannone/keyboard windows only
func reset() {
term.Sync() // cosmestic purpose
}
func SniffCurrent() {
err := term.Init()
if err != nil {
panic(err)
}
defer term.Close()
fmt.Println("Enter any key to see their ASCII code or press ESC button to quit")
keyPressListenerLoop:
for {
switch ev := term.PollEvent(); ev.Type {
case term.EventKey:
switch ev.Key {
case term.KeyEsc:
break keyPressListenerLoop
case term.KeyF1:
reset()
fmt.Println("F1 pressed")
case term.KeyF2:
reset()
fmt.Println("F2 pressed")
case term.KeyF3:
reset()
fmt.Println("F3 pressed")
case term.KeyF4:
reset()
fmt.Println("F4 pressed")
case term.KeyF5:
reset()
fmt.Println("F5 pressed")
case term.KeyF6:
reset()
fmt.Println("F6 pressed")
case term.KeyF7:
reset()
fmt.Println("F7 pressed")
case term.KeyF8:
reset()
fmt.Println("F8 pressed")
case term.KeyF9:
reset()
fmt.Println("F9 pressed")
case term.KeyF10:
reset()
fmt.Println("F10 pressed")
case term.KeyF11:
reset()
fmt.Println("F11 pressed")
case term.KeyF12:
reset()
fmt.Println("F12 pressed")
case term.KeyInsert:
reset()
fmt.Println("Insert pressed")
case term.KeyDelete:
reset()
fmt.Println("Delete pressed")
case term.KeyHome:
reset()
fmt.Println("Home pressed")
case term.KeyEnd:
reset()
fmt.Println("End pressed")
case term.KeyPgup:
reset()
fmt.Println("Page Up pressed")
case term.KeyPgdn:
reset()
fmt.Println("Page Down pressed")
case term.KeyArrowUp:
reset()
fmt.Println("Arrow Up pressed")
case term.KeyArrowDown:
reset()
fmt.Println("Arrow Down pressed")
case term.KeyArrowLeft:
reset()
fmt.Println("Arrow Left pressed")
case term.KeyArrowRight:
reset()
fmt.Println("Arrow Right pressed")
case term.KeySpace:
reset()
fmt.Println("Space pressed")
case term.KeyBackspace:
reset()
fmt.Println("Backspace pressed")
case term.KeyEnter:
reset()
fmt.Println("Enter pressed")
case term.KeyTab:
reset()
fmt.Println("Tab pressed")
default:
// we only want to read a single character or one key pressed event
reset()
fmt.Println("ASCII : ", ev.Ch)
}
case term.EventError:
panic(ev.Err)
}
}
}
func SniffGlobal() {
keve := robotgo.AddEvent("k")
if keve == 0 {
fmt.Println("you press...", "k")
}
mleft := robotgo.AddEvent("mleft")
if mleft == 0 {
fmt.Println("you press...", "mouse left button")
}
}