From 896f03c6f7a43b77f1287a1675f27bebb6abed31 Mon Sep 17 00:00:00 2001 From: Minizbot2012 Date: Sat, 6 Jun 2020 09:43:11 -0400 Subject: [PATCH] Fix and clean, updated CKI --- keys/cki.go | 97 +++++++----------------------------------------- keys/keys.go | 46 +++++++++++++++++++++++ ui/bind/popup.go | 9 ++--- 3 files changed, 64 insertions(+), 88 deletions(-) diff --git a/keys/cki.go b/keys/cki.go index 5cdea1c..a1f4a3d 100644 --- a/keys/cki.go +++ b/keys/cki.go @@ -4,96 +4,27 @@ import ( "fmt" "fyne.io/fyne" - "fyne.io/fyne/driver/desktop" ) -//CKIFyneKeyMap Control Keys interop -func CKIFyneKeyMap(e fyne.KeyName) int { - fmt.Println(e) - switch e { - case fyne.KeyUp: - return CommonToASCII["KEY_UP"] - case fyne.KeyDown: - return CommonToASCII["KEY_DOWN"] - case fyne.KeyLeft: - return CommonToASCII["KEY_LEFT"] - case fyne.KeyRight: - return CommonToASCII["KEY_RIGHT"] - case fyne.KeyEnd: - return CommonToASCII["KEY_END"] - case fyne.KeyHome: - return CommonToASCII["KEY_HOME"] - case fyne.KeyInsert: - return CommonToASCII["KEY_INSERT"] - case fyne.KeyDelete: - return CommonToASCII["KEY_DELETE"] - case fyne.KeyEnter: - return CommonToASCII["KEY_ENTER"] - case fyne.KeyTab: - return CommonToASCII["KEY_TAB"] - case fyne.KeyEscape: - return CommonToASCII["KEY_ESC"] - case fyne.KeyF1: - return CommonToASCII["KEY_F1"] - case fyne.KeyF2: - return CommonToASCII["KEY_F2"] - case fyne.KeyF3: - return CommonToASCII["KEY_F3"] - case fyne.KeyF4: - return CommonToASCII["KEY_F4"] - case fyne.KeyF5: - return CommonToASCII["KEY_F5"] - case fyne.KeyF6: - return CommonToASCII["KEY_F6"] - case fyne.KeyF7: - return CommonToASCII["KEY_F7"] - case fyne.KeyF8: - return CommonToASCII["KEY_F8"] - case fyne.KeyF9: - return CommonToASCII["KEY_F9"] - case fyne.KeyF10: - return CommonToASCII["KEY_F10"] - case fyne.KeyF11: - return CommonToASCII["KEY_F11"] - case fyne.KeyF12: - return CommonToASCII["KEY_F12"] - case fyne.KeyPageDown: - return CommonToASCII["KEY_PAGEDOWN"] - case fyne.KeyPageUp: - return CommonToASCII["KEY_PAGEUP"] - case desktop.KeyAltLeft: - return CommonToASCII["KEY_LEFTALT"] - case desktop.KeyAltRight: - return CommonToASCII["KEY_RIGHTALT"] - case desktop.KeyControlLeft: - return CommonToASCII["KEY_LEFTCTRL"] - case desktop.KeyControlRight: - return CommonToASCII["KEY_RIGHTCTRL"] - case desktop.KeyShiftLeft: - return CommonToASCII["KEY_LEFTSHIFT"] - case desktop.KeyShiftRight: - return CommonToASCII["KEY_RIGHTSHIFT"] - default: - return CommonToASCII["KEY_"+string(e)] - } +//CKIFIsCMPLX Determines whether or not to shorten +func CKIFIsCMPLX(e fyne.KeyName) bool { + _, ok := FyneToASCII[e] + return ok } -//CKIDetName Determines CTRL key status and returns ascii or name for it -func CKIDetName(e fyne.KeyName) string { - i := CKIFyneKeyMap(e) - if i != 0 { - return ASCIIToCommon[i] - } - return "UNK" +//CKIAIsCMPLX Determines whether or not to shorten in revo +func CKIAIsCMPLX(i int) bool { + _, ok := ASCIIToFyne[i] + return ok } -//CKIDetControl Determines if this is a control key -func CKIDetControl(e fyne.KeyName) bool { - i := CKIFyneKeyMap(e) - if i != 0 { - return true +//CKIFyneKeyMap Control Keys interop +func CKIFyneKeyMap(e fyne.KeyName) int { + fmt.Println(e) + if val, ok := FyneToASCII[e]; ok { + return val } - return false + return CommonToASCII["KEY_"+string(e)] } //CKICommonName returns common name for ascii diff --git a/keys/keys.go b/keys/keys.go index ed6790a..825577d 100644 --- a/keys/keys.go +++ b/keys/keys.go @@ -3,6 +3,8 @@ package keys import ( "encoding/json" + "fyne.io/fyne" + "fyne.io/fyne/driver/desktop" "github.com/minizbot2012/orbbind/box" ) @@ -13,8 +15,45 @@ var ( CommonToScan map[string]int CommonToASCII map[string]int + FyneToASCII map[fyne.KeyName]int + ASCIIToFyne map[int]fyne.KeyName ) +func genStatics() { + FyneToASCII[fyne.KeyUp] = CommonToASCII["KEY_UP"] + FyneToASCII[fyne.KeyDown] = CommonToASCII["KEY_DOWN"] + FyneToASCII[fyne.KeyRight] = CommonToASCII["KEY_RIGHT"] + FyneToASCII[fyne.KeyLeft] = CommonToASCII["KEY_LEFT"] + FyneToASCII[fyne.KeyEnd] = CommonToASCII["KEY_END"] + FyneToASCII[fyne.KeyHome] = CommonToASCII["KEY_HOME"] + FyneToASCII[fyne.KeyInsert] = CommonToASCII["KEY_INSERT"] + FyneToASCII[fyne.KeyDelete] = CommonToASCII["KEY_DELETE"] + FyneToASCII[fyne.KeyEnter] = CommonToASCII["KEY_ENTER"] + FyneToASCII[fyne.KeyTab] = CommonToASCII["KEY_TAB"] + FyneToASCII[fyne.KeyEscape] = CommonToASCII["KEY_ESC"] + FyneToASCII[fyne.KeyF1] = CommonToASCII["KEY_F1"] + FyneToASCII[fyne.KeyF2] = CommonToASCII["KEY_F2"] + FyneToASCII[fyne.KeyF3] = CommonToASCII["KEY_F3"] + FyneToASCII[fyne.KeyF4] = CommonToASCII["KEY_F4"] + FyneToASCII[fyne.KeyF5] = CommonToASCII["KEY_F5"] + FyneToASCII[fyne.KeyF6] = CommonToASCII["KEY_F6"] + FyneToASCII[fyne.KeyF7] = CommonToASCII["KEY_F7"] + FyneToASCII[fyne.KeyF8] = CommonToASCII["KEY_F8"] + FyneToASCII[fyne.KeyF9] = CommonToASCII["KEY_F9"] + FyneToASCII[fyne.KeyF10] = CommonToASCII["KEY_F10"] + FyneToASCII[fyne.KeyF11] = CommonToASCII["KEY_F11"] + FyneToASCII[fyne.KeyF12] = CommonToASCII["KEY_F12"] + FyneToASCII[fyne.KeyPageDown] = CommonToASCII["KEY_PAGEDOWN"] + FyneToASCII[fyne.KeyPageUp] = CommonToASCII["KEY_PAGEUP"] + FyneToASCII[fyne.KeySpace] = CommonToASCII["KEY_SPACE"] + FyneToASCII[desktop.KeyAltLeft] = CommonToASCII["KEY_LEFTALT"] + FyneToASCII[desktop.KeyAltRight] = CommonToASCII["KEY_RIGHTALT"] + FyneToASCII[desktop.KeyControlLeft] = CommonToASCII["KEY_LEFTCTRL"] + FyneToASCII[desktop.KeyControlRight] = CommonToASCII["KEY_RIGHTCTRL"] + FyneToASCII[desktop.KeyShiftLeft] = CommonToASCII["KEY_LEFTSHIFT"] + FyneToASCII[desktop.KeyShiftRight] = CommonToASCII["KEY_RIGHTSHIFT"] +} + func genMap() { ASCII := box.Get("ascii.json") SC := box.Get("scancodes.json") @@ -26,6 +65,10 @@ func genMap() { for k, v := range CommonToScan { ScanToCommon[v] = k } + genStatics() + for k, v := range FyneToASCII { + ASCIIToFyne[v] = k + } } //GetASCIIForSC Returns Ascii for Scancode @@ -44,5 +87,8 @@ func init() { CommonToScan = make(map[string]int) CommonToASCII = make(map[string]int) + + FyneToASCII = make(map[fyne.KeyName]int) + ASCIIToFyne = make(map[int]fyne.KeyName) genMap() } diff --git a/ui/bind/popup.go b/ui/bind/popup.go index 4af7d13..1ee8dfd 100644 --- a/ui/bind/popup.go +++ b/ui/bind/popup.go @@ -26,7 +26,7 @@ type Page struct { //TypeKey event on key func (bp *Page) TypeKey(e *fyne.KeyEvent) { bp.Bind.Bound = keys.CKIFyneKeyMap(e.Name) - if !keys.CKIDetControl(e.Name) { + if !keys.CKIFIsCMPLX(e.Name) { kp := keys.ASCIIToCommon[int(e.Name[0])] bp.dev["BL"].(*widget.Label).SetText(kp) } else { @@ -61,11 +61,10 @@ func (bp *Page) createGrid() *fyne.Container { //Create the binding page popup func (bp *Page) Create(bid string) fyne.CanvasObject { bp.dev = make(map[string]fyne.CanvasObject) - cmn := len(keys.ASCIIToCommon[bp.Bind.Bound]) - if cmn == 5 { - bp.dev["BL"] = widget.NewLabel(string(keys.ASCIIToCommon[bp.Bind.Bound][cmn-1])) - } else { + if keys.CKIAIsCMPLX(bp.Bind.Bound) { bp.dev["BL"] = widget.NewLabel(string(keys.ASCIIToCommon[bp.Bind.Bound])) + } else { + bp.dev["BL"] = widget.NewLabel(keys.CKIName(bp.Bind.Bound)) } pop := widget.NewVBox(bp.dev["BL"], bp.createGrid()) bp.window.Canvas().SetOnTypedKey(bp.TypeKey)