From ba4fc4a57f9a38252f708f785f37aa24138dfe09 Mon Sep 17 00:00:00 2001 From: faiface Date: Thu, 9 May 2019 14:28:25 +0200 Subject: change event strings to event types --- win/events.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ win/win.go | 97 +++++++++++++++++++++++------------------------------------ 2 files changed, 127 insertions(+), 59 deletions(-) create mode 100644 win/events.go (limited to 'win') diff --git a/win/events.go b/win/events.go new file mode 100644 index 0000000..90fab52 --- /dev/null +++ b/win/events.go @@ -0,0 +1,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 string + +// List of all keyboard keys. +const ( + KeyLeft Key = "left" + KeyRight Key = "right" + KeyUp Key = "up" + KeyDown Key = "down" + KeyEscape Key = "escape" + KeySpace Key = "space" + KeyBackspace Key = "backspace" + KeyDelete Key = "delete" + KeyEnter Key = "enter" + KeyTab Key = "tab" + KeyHome Key = "home" + KeyEnd Key = "end" + KeyPageUp Key = "pageup" + KeyPageDown Key = "pagedown" + KeyShift Key = "shift" + KeyCtrl Key = "ctrl" + KeyAlt Key = "alt" +) + +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) } diff --git a/win/win.go b/win/win.go index 69bc5c1..f624f35 100644 --- a/win/win.go +++ b/win/win.go @@ -127,27 +127,6 @@ func makeGLFWWin(o *options) (*glfw.Window, error) { // It receives its events from the OS and it draws to the surface of the window. // // Warning: only one window can be open at a time. This will be fixed. -// -// Here are all kinds of events that a window can produce, along with descriptions. -// Things enclosed in <> are values that are filled in. -// -// resize//// Window resized to (x0, y0, x1, y1). -// wi/close Window close button pressed. -// mo/move// Mouse moved to (x, y). -// mo/down///