From 96910aa8a32d7dec2f011244848e532ea624367f Mon Sep 17 00:00:00 2001 From: Caleb Bassi Date: Fri, 25 Jan 2019 03:41:35 -0800 Subject: [PATCH] Refactor events.go --- events.go | 248 ++++++++++++++++++++---------------------------------- 1 file changed, 92 insertions(+), 156 deletions(-) diff --git a/events.go b/events.go index edaa3b8..7ff6cf4 100644 --- a/events.go +++ b/events.go @@ -24,10 +24,22 @@ List of events: > etc terminal events: - + + + keyboard events that do not work: + + + + + + + + + + */ -type EventType int +type EventType uint const ( KeyboardEvent EventType = iota @@ -65,6 +77,66 @@ func PollEvents() <-chan Event { return ch } +var keyboardMap = map[tb.Key]string{ + tb.KeyF1: "", + tb.KeyF2: "", + tb.KeyF3: "", + tb.KeyF4: "", + tb.KeyF5: "", + tb.KeyF6: "", + tb.KeyF7: "", + tb.KeyF8: "", + tb.KeyF9: "", + tb.KeyF10: "", + tb.KeyF11: "", + tb.KeyF12: "", + tb.KeyInsert: "", + tb.KeyDelete: "", + tb.KeyHome: "", + tb.KeyEnd: "", + tb.KeyPgup: "", + tb.KeyPgdn: "", + tb.KeyArrowUp: "", + tb.KeyArrowDown: "", + tb.KeyArrowLeft: "", + tb.KeyArrowRight: "", + + tb.KeyCtrlSpace: ">", // tb.KeyCtrl2 tb.KeyCtrlTilde + tb.KeyCtrlA: "", + tb.KeyCtrlB: "", + tb.KeyCtrlC: "", + tb.KeyCtrlD: "", + tb.KeyCtrlE: "", + tb.KeyCtrlF: "", + tb.KeyCtrlG: "", + tb.KeyBackspace: ">", // tb.KeyCtrlH + tb.KeyTab: "", // tb.KeyCtrlI + tb.KeyCtrlJ: "", + tb.KeyCtrlK: "", + tb.KeyCtrlL: "", + tb.KeyEnter: "", // tb.KeyCtrlM + tb.KeyCtrlN: "", + tb.KeyCtrlO: "", + tb.KeyCtrlP: "", + tb.KeyCtrlQ: "", + tb.KeyCtrlR: "", + tb.KeyCtrlS: "", + tb.KeyCtrlT: "", + tb.KeyCtrlU: "", + tb.KeyCtrlV: "", + tb.KeyCtrlW: "", + tb.KeyCtrlX: "", + tb.KeyCtrlY: "", + tb.KeyCtrlZ: "", + tb.KeyEsc: "", // tb.KeyCtrlLsqBracket tb.KeyCtrl3 + tb.KeyCtrl4: "", // tb.KeyCtrlBackslash + tb.KeyCtrl5: "", // tb.KeyCtrlRsqBracket + tb.KeyCtrl6: "", + tb.KeyCtrl7: "", // tb.KeyCtrlSlash tb.KeyCtrlUnderscore + tb.KeySpace: "", + tb.KeyBackspace2: "", // tb.KeyCtrl8: +} + // convertTermboxKeyboardEvent converts a termbox keyboard event to a more friendly string format. // Combines modifiers into the string instead of having them as additional fields in an event. func convertTermboxKeyboardEvent(e tb.Event) Event { @@ -76,138 +148,11 @@ func convertTermboxKeyboardEvent(e tb.Event) Event { if e.Ch != 0 { ID = fmt.Sprintf(ID, string(e.Ch)) } else { - switchExpression := func() string { - switch e.Key { - case tb.KeyF1: - return "" - case tb.KeyF2: - return "" - case tb.KeyF3: - return "" - case tb.KeyF4: - return "" - case tb.KeyF5: - return "" - case tb.KeyF6: - return "" - case tb.KeyF7: - return "" - case tb.KeyF8: - return "" - case tb.KeyF9: - return "" - case tb.KeyF10: - return "" - case tb.KeyF11: - return "" - case tb.KeyF12: - return "" - case tb.KeyInsert: - return "" - case tb.KeyDelete: - return "" - case tb.KeyHome: - return "" - case tb.KeyEnd: - return "" - case tb.KeyPgup: - return "" - case tb.KeyPgdn: - return "" - case tb.KeyArrowUp: - return "" - case tb.KeyArrowDown: - return "" - case tb.KeyArrowLeft: - return "" - case tb.KeyArrowRight: - return "" - - case tb.KeyCtrlTilde: // tb.KeyCtrl2 tb.KeyCtrlSpace - // doesn't work - // doesn't work - return ">" - case tb.KeyCtrlA: - return "" - case tb.KeyCtrlB: - return "" - case tb.KeyCtrlC: - return "" - case tb.KeyCtrlD: - return "" - case tb.KeyCtrlE: - return "" - case tb.KeyCtrlF: - return "" - case tb.KeyCtrlG: - return "" - case tb.KeyBackspace: // tb.KeyCtrlH - // doesn't work - return ">" - case tb.KeyTab: // tb.KeyCtrlI - // doesn't work - return "" - case tb.KeyCtrlJ: - return "" - case tb.KeyCtrlK: - return "" - case tb.KeyCtrlL: - return "" - case tb.KeyEnter: // tb.KeyCtrlM - // doesn't work - return "" - case tb.KeyCtrlN: - return "" - case tb.KeyCtrlO: - return "" - case tb.KeyCtrlP: - return "" - case tb.KeyCtrlQ: - return "" - case tb.KeyCtrlR: - return "" - case tb.KeyCtrlS: - return "" - case tb.KeyCtrlT: - return "" - case tb.KeyCtrlU: - return "" - case tb.KeyCtrlV: - return "" - case tb.KeyCtrlW: - return "" - case tb.KeyCtrlX: - return "" - case tb.KeyCtrlY: - return "" - case tb.KeyCtrlZ: - return "" - case tb.KeyEsc: // tb.KeyCtrlLsqBracket tb.KeyCtrl3 - // doesn't work - // doesn't work - return "" - case tb.KeyCtrl4: // tb.KeyCtrlBackslash - // doesn't work - return "" - case tb.KeyCtrl5: // tb.KeyCtrlRsqBracket - // doesn't work - return "" - case tb.KeyCtrl6: - return "" - case tb.KeyCtrl7: // tb.KeyCtrlSlash tb.KeyCtrlUnderscore - // doesn't work - // doesn't work - return "" - case tb.KeySpace: - return "" - case tb.KeyBackspace2: // tb.KeyCtrl8: - // doesn't work - return "" - } - // doesn't work - return "" + converted, ok := keyboardMap[e.Key] + if !ok { + converted = "" } - ID = fmt.Sprintf(ID, switchExpression()) + ID = fmt.Sprintf(ID, converted) } return Event{ @@ -216,26 +161,21 @@ func convertTermboxKeyboardEvent(e tb.Event) Event { } } -func convertTermboxMouseEvent(e tb.Event) Event { - mouseButtonMap := map[tb.Key]string{ - tb.MouseLeft: "", - tb.MouseMiddle: "", - tb.MouseRight: "", - tb.MouseRelease: "", - tb.MouseWheelUp: "", - tb.MouseWheelDown: "", - } +var mouseButtonMap = map[tb.Key]string{ + tb.MouseLeft: "", + tb.MouseMiddle: "", + tb.MouseRight: "", + tb.MouseRelease: "", + tb.MouseWheelUp: "", + tb.MouseWheelDown: "", +} +func convertTermboxMouseEvent(e tb.Event) Event { converted, ok := mouseButtonMap[e.Key] if !ok { converted = "Unknown_Mouse_Button" } - - Drag := false - if e.Mod == tb.ModMotion { - Drag = true - } - + Drag := e.Mod == tb.ModMotion return Event{ Type: MouseEvent, ID: converted, @@ -252,16 +192,13 @@ func convertTermboxEvent(e tb.Event) Event { if e.Type == tb.EventError { panic(e.Err) } - - var event Event - switch e.Type { case tb.EventKey: - event = convertTermboxKeyboardEvent(e) + return convertTermboxKeyboardEvent(e) case tb.EventMouse: - event = convertTermboxMouseEvent(e) + return convertTermboxMouseEvent(e) case tb.EventResize: - event = Event{ + return Event{ Type: ResizeEvent, ID: "", Payload: Resize{ @@ -270,6 +207,5 @@ func convertTermboxEvent(e tb.Event) Event { }, } } - - return event + return Event{} }