2020-05-13 13:57:04 +00:00
|
|
|
package ui
|
|
|
|
|
|
|
|
type Key int
|
|
|
|
|
|
|
|
const (
|
|
|
|
KeyNone Key = iota
|
|
|
|
Key0
|
|
|
|
Key1
|
|
|
|
Key2
|
|
|
|
Key3
|
|
|
|
Key4
|
|
|
|
Key5
|
|
|
|
Key6
|
|
|
|
Key7
|
|
|
|
Key8
|
|
|
|
Key9
|
|
|
|
KeyA
|
|
|
|
KeyAlt
|
|
|
|
KeyAltGr
|
|
|
|
KeyAt
|
|
|
|
KeyB
|
|
|
|
KeyBack
|
|
|
|
KeyBackslash //x2
|
|
|
|
KeyBackspace
|
|
|
|
KeyBacktick
|
|
|
|
KeyButtonA
|
|
|
|
KeyButtonB
|
|
|
|
KeyButtonL1
|
|
|
|
KeyButtonL2
|
|
|
|
KeyButtonR1
|
|
|
|
KeyButtonR2
|
|
|
|
KeyButtonX
|
|
|
|
KeyButtonY
|
|
|
|
KeyC
|
|
|
|
KeyCapsLock
|
|
|
|
KeyCircumflex
|
|
|
|
KeyCloseBrace
|
|
|
|
KeyColon2
|
|
|
|
KeyComma
|
|
|
|
KeyCommand
|
|
|
|
KeyD
|
|
|
|
KeyDelete
|
|
|
|
KeyDown
|
|
|
|
KeyDPadCenter
|
|
|
|
KeyDPadDown
|
|
|
|
KeyDPadLeft
|
|
|
|
KeyDPadRight
|
|
|
|
KeyDPadUp
|
|
|
|
KeyE
|
|
|
|
KeyEnd
|
2020-05-15 07:20:44 +00:00
|
|
|
KeyEnter
|
2020-05-13 13:57:04 +00:00
|
|
|
KeyEquals
|
|
|
|
KeyEscape
|
|
|
|
KeyF
|
|
|
|
KeyF1
|
|
|
|
KeyF2
|
|
|
|
KeyF3
|
|
|
|
KeyF4
|
|
|
|
KeyF5
|
|
|
|
KeyF6
|
|
|
|
KeyF7
|
|
|
|
KeyF8
|
|
|
|
KeyF9
|
|
|
|
KeyF10
|
|
|
|
KeyF11
|
|
|
|
KeyF12
|
|
|
|
KeyFullstop
|
|
|
|
KeyG
|
|
|
|
KeyH
|
|
|
|
KeyHome
|
|
|
|
KeyI
|
|
|
|
KeyInsert
|
|
|
|
KeyJ
|
|
|
|
KeyK
|
|
|
|
KeyL
|
|
|
|
KeyLeft
|
|
|
|
KeyLeftControl
|
|
|
|
KeyLeftShift
|
|
|
|
KeyLeftWin
|
|
|
|
KeyM
|
|
|
|
KeyMenu
|
|
|
|
KeyMinus
|
|
|
|
KeyN
|
|
|
|
KeyNumLock
|
|
|
|
KeyO
|
|
|
|
KeyOpenBrace
|
|
|
|
KeyP
|
|
|
|
KeyPad0
|
|
|
|
KeyPad1
|
|
|
|
KeyPad2
|
|
|
|
KeyPad3
|
|
|
|
KeyPad4
|
|
|
|
KeyPad5
|
|
|
|
KeyPad6
|
|
|
|
KeyPad7
|
|
|
|
KeyPad8
|
|
|
|
KeyPad9
|
|
|
|
KeyPadAsterisk
|
|
|
|
KeyPadDelete
|
|
|
|
KeyPadEnter
|
|
|
|
KeyPadEquals
|
|
|
|
KeyPadMinus
|
|
|
|
KeyPadPlus
|
|
|
|
KeyPadSlash
|
|
|
|
KeyPageDown
|
|
|
|
KeyPageUp
|
|
|
|
KeyPause
|
|
|
|
KeyPrintScreen
|
|
|
|
KeyQ
|
|
|
|
KeyQuote
|
|
|
|
KeyR
|
|
|
|
KeyRight
|
|
|
|
KeyRightControl
|
|
|
|
KeyRightShift
|
|
|
|
KeyRightWin
|
|
|
|
KeyS
|
|
|
|
KeyScrollLock
|
|
|
|
KeySearch
|
|
|
|
KeySelect
|
|
|
|
KeySemicolon
|
|
|
|
KeySlash
|
|
|
|
KeySpace
|
|
|
|
KeyStart
|
|
|
|
KeyT
|
|
|
|
KeyTab
|
|
|
|
KeyThumbL
|
|
|
|
KeyThumbR
|
|
|
|
KeyTilde
|
|
|
|
KeyU
|
|
|
|
KeyUp
|
|
|
|
KeyV
|
|
|
|
KeyVolumeDown
|
|
|
|
KeyVolumeUp
|
|
|
|
KeyW
|
|
|
|
KeyX
|
|
|
|
KeyY
|
|
|
|
KeyZ
|
|
|
|
)
|
2020-05-15 07:20:44 +00:00
|
|
|
|
|
|
|
type KeyState map[Key]bool
|
|
|
|
|
|
|
|
func (s KeyState) Modifiers() KeyModifier {
|
|
|
|
var mods KeyModifier
|
|
|
|
if s[KeyAlt] || s[KeyAltGr] {
|
|
|
|
mods |= KeyModifierAlt
|
|
|
|
}
|
|
|
|
if s[KeyLeftControl] || s[KeyRightControl] {
|
|
|
|
mods |= KeyModifierControl
|
|
|
|
}
|
|
|
|
if s[KeyLeftShift] || s[KeyRightShift] {
|
|
|
|
mods |= KeyModifierShift
|
|
|
|
}
|
|
|
|
if s[KeyLeftWin] || s[KeyRightWin] || s[KeyCommand] {
|
|
|
|
mods |= KeyModifierOSCommand
|
|
|
|
}
|
|
|
|
return mods
|
|
|
|
}
|