forked from faiface/gui
/
events.go
89 lines (74 loc) · 2.34 KB
/
events.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
package win
import (
"fmt"
"image"
)
// Button indicates a mouse button in an event.
type Button string
// List of all mouse buttons.
const (
ButtonLeft Button = "left"
ButtonRight Button = "right"
ButtonMiddle Button = "middle"
)
// Key indicates a keyboard key in an event.
type Key int
// List of all keyboard keys.
const (
KeyLeft Key = iota
KeyRight
KeyUp
KeyDown
KeyEscape
KeySpace
KeyBackspace
KeyDelete
KeyEnter
KeyTab
KeyHome
KeyEnd
KeyPageUp
KeyPageDown
KeyShift
KeyCtrl
KeyAlt
)
type (
// WiClose is an event that happens when the user presses the close button on the window.
WiClose struct{}
// MoMove is an event that happens when the mouse gets moved across the window.
MoMove struct{ image.Point }
// MoDown is an event that happens when a mouse button gets pressed.
MoDown struct {
image.Point
Button Button
}
// MoUp is an event that happens when a mouse button gets released.
MoUp struct {
image.Point
Button Button
}
// MoScroll is an event that happens on scrolling the mouse.
//
// The Point field tells the amount scrolled in each direction.
MoScroll struct{ image.Point }
// KbType is an event that happens when a Unicode character gets typed on the keyboard.
KbType struct{ Rune rune }
// KbDown is an event that happens when a key on the keyboard gets pressed.
KbDown struct{ Key Key }
// KbUp is an event that happens when a key on the keyboard gets released.
KbUp struct{ Key Key }
// KbRepeat is an event that happens when a key on the keyboard gets repeated.
//
// This happens when its held down for some time.
KbRepeat struct{ Key Key }
)
func (wc WiClose) String() string { return "wi/close" }
func (mm MoMove) String() string { return fmt.Sprintf("mo/move/%d/%d", mm.X, mm.Y) }
func (md MoDown) String() string { return fmt.Sprintf("mo/down/%d/%d/%s", md.X, md.Y, md.Button) }
func (mu MoUp) String() string { return fmt.Sprintf("mo/up/%d/%d/%s", mu.X, mu.Y, mu.Button) }
func (ms MoScroll) String() string { return fmt.Sprintf("mo/scroll/%d/%d", ms.X, ms.Y) }
func (kt KbType) String() string { return fmt.Sprintf("kb/type/%d", kt.Rune) }
func (kd KbDown) String() string { return fmt.Sprintf("kb/down/%s", kd.Key) }
func (ku KbUp) String() string { return fmt.Sprintf("kb/up/%s", ku.Key) }
func (kr KbRepeat) String() string { return fmt.Sprintf("kb/repeat/%s", kr.Key) }