|
@@ -1,172 +0,0 @@
|
|
|
-package application
|
|
|
|
|
-
|
|
|
|
|
-import (
|
|
|
|
|
- "github.com/g3n/engine/window"
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
-// KeyState keeps track of the state of all keys.
|
|
|
|
|
-type KeyState struct {
|
|
|
|
|
- win window.IWindow
|
|
|
|
|
- states map[window.Key]bool
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// NewKeyState returns a new KeyState object.
|
|
|
|
|
-func NewKeyState(win window.IWindow) *KeyState {
|
|
|
|
|
-
|
|
|
|
|
- ks := new(KeyState)
|
|
|
|
|
- ks.win = win
|
|
|
|
|
- ks.states = map[window.Key]bool{
|
|
|
|
|
- window.KeyUnknown : false,
|
|
|
|
|
- window.KeySpace : false,
|
|
|
|
|
- window.KeyApostrophe : false,
|
|
|
|
|
- window.KeyComma : false,
|
|
|
|
|
- window.KeyMinus : false,
|
|
|
|
|
- window.KeyPeriod : false,
|
|
|
|
|
- window.KeySlash : false,
|
|
|
|
|
- window.Key0 : false,
|
|
|
|
|
- window.Key1 : false,
|
|
|
|
|
- window.Key2 : false,
|
|
|
|
|
- window.Key3 : false,
|
|
|
|
|
- window.Key4 : false,
|
|
|
|
|
- window.Key5 : false,
|
|
|
|
|
- window.Key6 : false,
|
|
|
|
|
- window.Key7 : false,
|
|
|
|
|
- window.Key8 : false,
|
|
|
|
|
- window.Key9 : false,
|
|
|
|
|
- window.KeySemicolon : false,
|
|
|
|
|
- window.KeyEqual : false,
|
|
|
|
|
- window.KeyA : false,
|
|
|
|
|
- window.KeyB : false,
|
|
|
|
|
- window.KeyC : false,
|
|
|
|
|
- window.KeyD : false,
|
|
|
|
|
- window.KeyE : false,
|
|
|
|
|
- window.KeyF : false,
|
|
|
|
|
- window.KeyG : false,
|
|
|
|
|
- window.KeyH : false,
|
|
|
|
|
- window.KeyI : false,
|
|
|
|
|
- window.KeyJ : false,
|
|
|
|
|
- window.KeyK : false,
|
|
|
|
|
- window.KeyL : false,
|
|
|
|
|
- window.KeyM : false,
|
|
|
|
|
- window.KeyN : false,
|
|
|
|
|
- window.KeyO : false,
|
|
|
|
|
- window.KeyP : false,
|
|
|
|
|
- window.KeyQ : false,
|
|
|
|
|
- window.KeyR : false,
|
|
|
|
|
- window.KeyS : false,
|
|
|
|
|
- window.KeyT : false,
|
|
|
|
|
- window.KeyU : false,
|
|
|
|
|
- window.KeyV : false,
|
|
|
|
|
- window.KeyW : false,
|
|
|
|
|
- window.KeyX : false,
|
|
|
|
|
- window.KeyY : false,
|
|
|
|
|
- window.KeyZ : false,
|
|
|
|
|
- window.KeyLeftBracket : false,
|
|
|
|
|
- window.KeyBackslash : false,
|
|
|
|
|
- window.KeyRightBracket : false,
|
|
|
|
|
- window.KeyGraveAccent : false,
|
|
|
|
|
- window.KeyWorld1 : false,
|
|
|
|
|
- window.KeyWorld2 : false,
|
|
|
|
|
- window.KeyEscape : false,
|
|
|
|
|
- window.KeyEnter : false,
|
|
|
|
|
- window.KeyTab : false,
|
|
|
|
|
- window.KeyBackspace : false,
|
|
|
|
|
- window.KeyInsert : false,
|
|
|
|
|
- window.KeyDelete : false,
|
|
|
|
|
- window.KeyRight : false,
|
|
|
|
|
- window.KeyLeft : false,
|
|
|
|
|
- window.KeyDown : false,
|
|
|
|
|
- window.KeyUp : false,
|
|
|
|
|
- window.KeyPageUp : false,
|
|
|
|
|
- window.KeyPageDown : false,
|
|
|
|
|
- window.KeyHome : false,
|
|
|
|
|
- window.KeyEnd : false,
|
|
|
|
|
- window.KeyCapsLock : false,
|
|
|
|
|
- window.KeyScrollLock : false,
|
|
|
|
|
- window.KeyNumLock : false,
|
|
|
|
|
- window.KeyPrintScreen : false,
|
|
|
|
|
- window.KeyPause : false,
|
|
|
|
|
- window.KeyF1 : false,
|
|
|
|
|
- window.KeyF2 : false,
|
|
|
|
|
- window.KeyF3 : false,
|
|
|
|
|
- window.KeyF4 : false,
|
|
|
|
|
- window.KeyF5 : false,
|
|
|
|
|
- window.KeyF6 : false,
|
|
|
|
|
- window.KeyF7 : false,
|
|
|
|
|
- window.KeyF8 : false,
|
|
|
|
|
- window.KeyF9 : false,
|
|
|
|
|
- window.KeyF10 : false,
|
|
|
|
|
- window.KeyF11 : false,
|
|
|
|
|
- window.KeyF12 : false,
|
|
|
|
|
- window.KeyF13 : false,
|
|
|
|
|
- window.KeyF14 : false,
|
|
|
|
|
- window.KeyF15 : false,
|
|
|
|
|
- window.KeyF16 : false,
|
|
|
|
|
- window.KeyF17 : false,
|
|
|
|
|
- window.KeyF18 : false,
|
|
|
|
|
- window.KeyF19 : false,
|
|
|
|
|
- window.KeyF20 : false,
|
|
|
|
|
- window.KeyF21 : false,
|
|
|
|
|
- window.KeyF22 : false,
|
|
|
|
|
- window.KeyF23 : false,
|
|
|
|
|
- window.KeyF24 : false,
|
|
|
|
|
- window.KeyF25 : false,
|
|
|
|
|
- window.KeyKP0 : false,
|
|
|
|
|
- window.KeyKP1 : false,
|
|
|
|
|
- window.KeyKP2 : false,
|
|
|
|
|
- window.KeyKP3 : false,
|
|
|
|
|
- window.KeyKP4 : false,
|
|
|
|
|
- window.KeyKP5 : false,
|
|
|
|
|
- window.KeyKP6 : false,
|
|
|
|
|
- window.KeyKP7 : false,
|
|
|
|
|
- window.KeyKP8 : false,
|
|
|
|
|
- window.KeyKP9 : false,
|
|
|
|
|
- window.KeyKPDecimal : false,
|
|
|
|
|
- window.KeyKPDivide : false,
|
|
|
|
|
- window.KeyKPMultiply : false,
|
|
|
|
|
- window.KeyKPSubtract : false,
|
|
|
|
|
- window.KeyKPAdd : false,
|
|
|
|
|
- window.KeyKPEnter : false,
|
|
|
|
|
- window.KeyKPEqual : false,
|
|
|
|
|
- window.KeyLeftShift : false,
|
|
|
|
|
- window.KeyLeftControl : false,
|
|
|
|
|
- window.KeyLeftAlt : false,
|
|
|
|
|
- window.KeyLeftSuper : false,
|
|
|
|
|
- window.KeyRightShift : false,
|
|
|
|
|
- window.KeyRightControl : false,
|
|
|
|
|
- window.KeyRightAlt : false,
|
|
|
|
|
- window.KeyRightSuper : false,
|
|
|
|
|
- window.KeyMenu : false,
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Subscribe to window key events
|
|
|
|
|
- ks.win.SubscribeID(window.OnKeyUp, &ks, ks.onKey)
|
|
|
|
|
- ks.win.SubscribeID(window.OnKeyDown, &ks, ks.onKey)
|
|
|
|
|
-
|
|
|
|
|
- return ks
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Dispose unsubscribes from the window events.
|
|
|
|
|
-func (ks *KeyState) Dispose() {
|
|
|
|
|
-
|
|
|
|
|
- ks.win.UnsubscribeID(window.OnKeyUp, &ks)
|
|
|
|
|
- ks.win.UnsubscribeID(window.OnKeyDown, &ks)
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Pressed returns whether the specified key is currently pressed.
|
|
|
|
|
-func (ks *KeyState) Pressed(k window.Key) bool {
|
|
|
|
|
-
|
|
|
|
|
- return ks.states[k]
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// onKey receives key events and updates the internal map of states.
|
|
|
|
|
-func (ks *KeyState) onKey(evname string, ev interface{}) {
|
|
|
|
|
-
|
|
|
|
|
- kev := ev.(*window.KeyEvent)
|
|
|
|
|
- switch evname {
|
|
|
|
|
- case window.OnKeyUp:
|
|
|
|
|
- ks.states[kev.Keycode] = false
|
|
|
|
|
- case window.OnKeyDown:
|
|
|
|
|
- ks.states[kev.Keycode] = true
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|