96 lines
1.8 KiB
Go
96 lines
1.8 KiB
Go
package input
|
|
|
|
// Key describes a named key on the keyboard. These are keys which are
|
|
// unspecific to layout or language, or are universal.
|
|
// Or, described in another way: keys that don't end up as printable characters.
|
|
type Key int
|
|
|
|
// Constants for commonly known named keys.
|
|
const (
|
|
KeyEnter = Key(300)
|
|
KeyEscape = Key(301)
|
|
KeyBackspace = Key(302)
|
|
KeyTab = Key(303)
|
|
|
|
KeyDown = Key(310)
|
|
KeyLeft = Key(311)
|
|
KeyRight = Key(312)
|
|
KeyUp = Key(313)
|
|
|
|
KeyDelete = Key(320)
|
|
KeyEnd = Key(321)
|
|
KeyHome = Key(322)
|
|
KeyInsert = Key(323)
|
|
KeyPageDown = Key(324)
|
|
KeyPageUp = Key(325)
|
|
|
|
KeyAlt = Key(330)
|
|
KeyControl = Key(331)
|
|
KeyShift = Key(332)
|
|
KeySuper = Key(333)
|
|
|
|
KeyPause = Key(340)
|
|
KeyPrintScreen = Key(341)
|
|
KeyCapsLock = Key(342)
|
|
KeyScrollLock = Key(343)
|
|
|
|
KeyF1 = Key(351)
|
|
KeyF10 = Key(360)
|
|
KeyF11 = Key(361)
|
|
KeyF12 = Key(362)
|
|
KeyF13 = Key(363)
|
|
KeyF14 = Key(364)
|
|
KeyF15 = Key(365)
|
|
KeyF16 = Key(366)
|
|
KeyF17 = Key(367)
|
|
KeyF18 = Key(368)
|
|
KeyF19 = Key(369)
|
|
KeyF2 = Key(352)
|
|
KeyF20 = Key(370)
|
|
KeyF21 = Key(371)
|
|
KeyF22 = Key(372)
|
|
KeyF23 = Key(373)
|
|
KeyF24 = Key(374)
|
|
KeyF25 = Key(375)
|
|
KeyF3 = Key(353)
|
|
KeyF4 = Key(354)
|
|
KeyF5 = Key(355)
|
|
KeyF6 = Key(356)
|
|
KeyF7 = Key(357)
|
|
KeyF8 = Key(358)
|
|
KeyF9 = Key(359)
|
|
|
|
KeyCopy = Key(380)
|
|
KeyCut = Key(381)
|
|
KeyPaste = Key(382)
|
|
|
|
KeyUndo = Key(390)
|
|
KeyRedo = Key(391)
|
|
|
|
KeySave = Key(400)
|
|
KeyNew = Key(401)
|
|
|
|
KeyA = Key(410)
|
|
KeyC = Key(411)
|
|
KeyV = Key(412)
|
|
KeyX = Key(413)
|
|
)
|
|
|
|
var keyToModifier = map[Key]Modifier{
|
|
KeyShift: ModShift,
|
|
KeyControl: ModControl,
|
|
KeyAlt: ModAlt,
|
|
KeySuper: ModSuper,
|
|
}
|
|
|
|
// AsModifier returns the modifier equivalent for the key - if applicable.
|
|
func (key Key) AsModifier() Modifier {
|
|
mod, isModifier := keyToModifier[key]
|
|
|
|
if !isModifier {
|
|
mod = ModNone
|
|
}
|
|
|
|
return mod
|
|
}
|