diff --git a/input.go b/input.go index e1f7c57..45463d0 100644 --- a/input.go +++ b/input.go @@ -186,6 +186,147 @@ const ( KeyLast = Button(glfw.KeyLast) ) +// Name returns a human-readable string describing the Button. +func (b Button) Name() string { + name, ok := buttonNames[b] + if !ok { + return "Invalid" + } + return name +} + +var buttonNames = map[Button]string{ + MouseButton4: "MouseButton4", + MouseButton5: "MouseButton5", + MouseButton6: "MouseButton6", + MouseButton7: "MouseButton7", + MouseButton8: "MouseButton8", + MouseButtonLeft: "MouseButtonLeft", + MouseButtonRight: "MouseButtonRight", + MouseButtonMiddle: "MouseButtonMiddle", + KeyUnknown: "Unknown", + KeySpace: "Space", + KeyApostrophe: "Apostrophe", + KeyComma: "Comma", + KeyMinus: "Minus", + KeyPeriod: "Period", + KeySlash: "Slash", + Key0: "0", + Key1: "1", + Key2: "2", + Key3: "3", + Key4: "4", + Key5: "5", + Key6: "6", + Key7: "7", + Key8: "8", + Key9: "9", + KeySemicolon: "Semicolon", + KeyEqual: "Equal", + KeyA: "A", + KeyB: "B", + KeyC: "C", + KeyD: "D", + KeyE: "E", + KeyF: "F", + KeyG: "G", + KeyH: "H", + KeyI: "I", + KeyJ: "J", + KeyK: "K", + KeyL: "L", + KeyM: "M", + KeyN: "N", + KeyO: "O", + KeyP: "P", + KeyQ: "Q", + KeyR: "R", + KeyS: "S", + KeyT: "T", + KeyU: "U", + KeyV: "V", + KeyW: "W", + KeyX: "X", + KeyY: "Y", + KeyZ: "Z", + KeyLeftBracket: "LeftBracket", + KeyBackslash: "Backslash", + KeyRightBracket: "RightBracket", + KeyGraveAccent: "GraveAccent", + KeyWorld1: "World1", + KeyWorld2: "World2", + KeyEscape: "Escape", + KeyEnter: "Enter", + KeyTab: "Tab", + KeyBackspace: "Backspace", + KeyInsert: "Insert", + KeyDelete: "Delete", + KeyRight: "Right", + KeyLeft: "Left", + KeyDown: "Down", + KeyUp: "Up", + KeyPageUp: "PageUp", + KeyPageDown: "PageDown", + KeyHome: "Home", + KeyEnd: "End", + KeyCapsLock: "CapsLock", + KeyScrollLock: "ScrollLock", + KeyNumLock: "NumLock", + KeyPrintScreen: "PrintScreen", + KeyPause: "Pause", + KeyF1: "F1", + KeyF2: "F2", + KeyF3: "F3", + KeyF4: "F4", + KeyF5: "F5", + KeyF6: "F6", + KeyF7: "F7", + KeyF8: "F8", + KeyF9: "F9", + KeyF10: "F10", + KeyF11: "F11", + KeyF12: "F12", + KeyF13: "F13", + KeyF14: "F14", + KeyF15: "F15", + KeyF16: "F16", + KeyF17: "F17", + KeyF18: "F18", + KeyF19: "F19", + KeyF20: "F20", + KeyF21: "F21", + KeyF22: "F22", + KeyF23: "F23", + KeyF24: "F24", + KeyF25: "F25", + KeyKP0: "KP0", + KeyKP1: "KP1", + KeyKP2: "KP2", + KeyKP3: "KP3", + KeyKP4: "KP4", + KeyKP5: "KP5", + KeyKP6: "KP6", + KeyKP7: "KP7", + KeyKP8: "KP8", + KeyKP9: "KP9", + KeyKPDecimal: "KPDecimal", + KeyKPDivide: "KPDivide", + KeyKPMultiply: "KPMultiply", + KeyKPSubtract: "KPSubtract", + KeyKPAdd: "KPAdd", + KeyKPEnter: "KPEnter", + KeyKPEqual: "KPEqual", + KeyLeftShift: "LeftShift", + KeyLeftControl: "LeftControl", + KeyLeftAlt: "LeftAlt", + KeyLeftSuper: "LeftSuper", + KeyRightShift: "RightShift", + KeyRightControl: "RightControl", + KeyRightAlt: "RightAlt", + KeyRightSuper: "RightSuper", + KeyMenu: "Menu", +} + func (w *Window) initInput() { mainthread.Call(func() { w.window.SetMouseButtonCallback(func(_ *glfw.Window, button glfw.MouseButton, action glfw.Action, mod glfw.ModifierKey) {