From 3d0efe6bed6e0625751e7cca262eac929cae2dde Mon Sep 17 00:00:00 2001 From: Minizbot2012 Date: Sun, 8 Nov 2020 22:27:26 -0500 Subject: [PATCH] Cleanup and fixes --- keymap/orbweaver/orbweaver.go | 33 +----- keys/cki2.go | 2 + keys/code_string.go | 8 +- keys/keys.go | 2 +- keys/scans.go | 200 +++++++++++++++++----------------- ui/bind/popup.go | 21 ++-- 6 files changed, 118 insertions(+), 148 deletions(-) diff --git a/keymap/orbweaver/orbweaver.go b/keymap/orbweaver/orbweaver.go index e9a40f2..6e5b512 100644 --- a/keymap/orbweaver/orbweaver.go +++ b/keymap/orbweaver/orbweaver.go @@ -4,52 +4,25 @@ import ( "encoding/binary" "fyne.io/fyne" - "github.com/minizbot2012/orbbind/keys" ) //PKM format for altering the keymap type PKM struct { MIP [20]uint16 SIP [6]uint16 - COL [3]int + COL [3]byte } //SaveIntoKeymap saves an orb func SaveIntoKeymap(mapped *PKM, file fyne.URIWriteCloser) { - buf := make([]byte, 2) - for i := 0; i < 26; i++ { - if i < 20 { - binary.LittleEndian.PutUint16(buf, uint16(keys.GetSCForASCII(mapped.MIP[i]))) - } else { - binary.LittleEndian.PutUint16(buf, uint16(keys.GetSCForASCII(mapped.SIP[i-20]))) - } - file.Write(buf) - } - arr := []byte{byte(mapped.COL[0]), byte(mapped.COL[1]), byte(mapped.COL[2])} - file.Write(arr) + binary.Write(file, binary.LittleEndian, mapped) file.Close() } //LoadFile loads an orb func LoadFile(file fyne.URIReadCloser) *PKM { mapped := &PKM{} - for i := 0; i < 26; i++ { - b := make([]byte, 2) - file.Read(b) - Asc := keys.GetASCIIForSC(binary.LittleEndian.Uint16(b)) - if i < 26 { - if i < 20 { - mapped.MIP[i] = Asc - } else { - mapped.SIP[i-20] = Asc - } - } - } - b := make([]byte, 3) - file.Read(b) - mapped.COL[0] = int(b[0]) - mapped.COL[1] = int(b[1]) - mapped.COL[2] = int(b[2]) + binary.Read(file, binary.LittleEndian, mapped) file.Close() return mapped } diff --git a/keys/cki2.go b/keys/cki2.go index 3a9bc37..9676203 100644 --- a/keys/cki2.go +++ b/keys/cki2.go @@ -23,6 +23,7 @@ var ASCIIToKC = map[rune]Code{ 'n': CodeN, 'o': CodeO, 'p': CodeP, + 'q': CodeQ, 'r': CodeR, 's': CodeS, 't': CodeT, @@ -120,6 +121,7 @@ var FyneToKC = map[fyne.KeyName]Code{ fyne.KeyPageDown: CodePageDown, fyne.KeyPageUp: CodePageUp, fyne.KeySpace: CodeSpace, + fyne.KeyBackTick: CodeGrave, desktop.KeyAltLeft: CodeLeftAlt, desktop.KeyAltRight: CodeRightAlt, desktop.KeyControlLeft: CodeLeftCntl, diff --git a/keys/code_string.go b/keys/code_string.go index ed9a5ff..3a7b73d 100644 --- a/keys/code_string.go +++ b/keys/code_string.go @@ -8,6 +8,7 @@ func _() { // An "invalid array index" compiler error signifies that the constant values have changed. // Re-run the stringer command to generate them again. var x [1]struct{} + _ = x[CodeNone-0] _ = x[CodeESC-1] _ = x[Code1-2] _ = x[Code2-3] @@ -110,7 +111,7 @@ func _() { } const ( - _Code_name_0 = "CodeESCCode1Code2Code3Code4Code5Code6Code7Code8Code9Code0CodeMinusCodeEqualCodeBackspaceCodeTabCodeQCodeWCodeECodeRCodeTCodeYCodeUCodeICodeOCodePCodeLeftBrackCodeRightBraceCodeEnterCodeLeftCntlCodeACodeSCodeDCodeFCodeGCodeHCodeJCodeKCodeLCodeSemicolonCodeApostropheCodeGraveCodeLeftShiftCodeBackslashCodeZCodeXCodeCCodeVCodeBCodeNCodeMCodeCommaCodeDotCodeSlashCodeRightShiftCodeKPAsteriskCodeLeftAltCodeSpaceCodeCapsLockCodeF1CodeF2CodeF3CodeF4CodeF5CodeF6CodeF7CodeF8CodeF9CodeF10CodeNumlockCodeScrollLockCodeKP7CodeKP8CodeKP9CodeKPMinusCodeKP4CodeKP5CodeKP6CodeKPPlusCodeKP1CodeKP2CodeKP3CodeKP0CodeKPDot" + _Code_name_0 = "CodeNoneCodeESCCode1Code2Code3Code4Code5Code6Code7Code8Code9Code0CodeMinusCodeEqualCodeBackspaceCodeTabCodeQCodeWCodeECodeRCodeTCodeYCodeUCodeICodeOCodePCodeLeftBrackCodeRightBraceCodeEnterCodeLeftCntlCodeACodeSCodeDCodeFCodeGCodeHCodeJCodeKCodeLCodeSemicolonCodeApostropheCodeGraveCodeLeftShiftCodeBackslashCodeZCodeXCodeCCodeVCodeBCodeNCodeMCodeCommaCodeDotCodeSlashCodeRightShiftCodeKPAsteriskCodeLeftAltCodeSpaceCodeCapsLockCodeF1CodeF2CodeF3CodeF4CodeF5CodeF6CodeF7CodeF8CodeF9CodeF10CodeNumlockCodeScrollLockCodeKP7CodeKP8CodeKP9CodeKPMinusCodeKP4CodeKP5CodeKP6CodeKPPlusCodeKP1CodeKP2CodeKP3CodeKP0CodeKPDot" _Code_name_1 = "CodeF11CodeF12" _Code_name_2 = "CodeKPEnterCodeRightControlCodeKPSlash" _Code_name_3 = "CodeRightAlt" @@ -118,7 +119,7 @@ const ( ) var ( - _Code_index_0 = [...]uint16{0, 7, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 66, 75, 88, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 158, 172, 181, 193, 198, 203, 208, 213, 218, 223, 228, 233, 238, 251, 265, 274, 287, 300, 305, 310, 315, 320, 325, 330, 335, 344, 351, 360, 374, 388, 399, 408, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 481, 492, 506, 513, 520, 527, 538, 545, 552, 559, 569, 576, 583, 590, 597, 606} + _Code_index_0 = [...]uint16{0, 8, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 74, 83, 96, 103, 108, 113, 118, 123, 128, 133, 138, 143, 148, 153, 166, 180, 189, 201, 206, 211, 216, 221, 226, 231, 236, 241, 246, 259, 273, 282, 295, 308, 313, 318, 323, 328, 333, 338, 343, 352, 359, 368, 382, 396, 407, 416, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482, 489, 500, 514, 521, 528, 535, 546, 553, 560, 567, 577, 584, 591, 598, 605, 614} _Code_index_1 = [...]uint8{0, 7, 14} _Code_index_2 = [...]uint8{0, 11, 27, 38} _Code_index_4 = [...]uint8{0, 8, 19, 29, 42, 56, 63, 76, 88, 98, 108} @@ -126,8 +127,7 @@ var ( func (i Code) String() string { switch { - case 1 <= i && i <= 83: - i -= 1 + case i <= 83: return _Code_name_0[_Code_index_0[i]:_Code_index_0[i+1]] case 87 <= i && i <= 88: i -= 87 diff --git a/keys/keys.go b/keys/keys.go index cd518de..521d419 100644 --- a/keys/keys.go +++ b/keys/keys.go @@ -28,7 +28,7 @@ func init() { //CKIFyneKeyMap Control Keys interop func CKIFyneKeyMap(e fyne.KeyName) uint16 { - if val, ok := KCToASCII[FyneToKC[e]]; ok { + if val, ok := FyneToKC[e]; ok { return uint16(val) } return 0 diff --git a/keys/scans.go b/keys/scans.go index d40d92b..5ea0e29 100644 --- a/keys/scans.go +++ b/keys/scans.go @@ -6,104 +6,104 @@ package keys type Code uint16 const ( - CodeNone uint16 = 0 - CodeESC Code = 1 - Code1 Code = 2 - Code2 Code = 3 - Code3 Code = 4 - Code4 Code = 5 - Code5 Code = 6 - Code6 Code = 7 - Code7 Code = 8 - Code8 Code = 9 - Code9 Code = 10 - Code0 Code = 11 - CodeMinus Code = 12 - CodeEqual Code = 13 - CodeBackspace Code = 14 - CodeTab Code = 15 - CodeQ Code = 16 - CodeW Code = 17 - CodeE Code = 18 - CodeR Code = 19 - CodeT Code = 20 - CodeY Code = 21 - CodeU Code = 22 - CodeI Code = 23 - CodeO Code = 24 - CodeP Code = 25 - CodeLeftBrack Code = 26 - CodeRightBrace Code = 27 - CodeEnter Code = 28 - CodeLeftCntl Code = 29 - CodeA Code = 30 - CodeS Code = 31 - CodeD Code = 32 - CodeF Code = 33 - CodeG Code = 34 - CodeH Code = 35 - CodeJ Code = 36 - CodeK Code = 37 - CodeL Code = 38 - CodeSemicolon Code = 39 - CodeApostrophe Code = 40 - CodeGrave Code = 41 - CodeLeftShift Code = 42 - CodeBackslash Code = 43 - CodeZ Code = 44 - CodeX Code = 45 - CodeC Code = 46 - CodeV Code = 47 - CodeB Code = 48 - CodeN Code = 49 - CodeM Code = 50 - CodeComma Code = 51 - CodeDot Code = 52 - CodeSlash Code = 53 - CodeRightShift Code = 54 - CodeKPAsterisk Code = 55 - CodeLeftAlt Code = 56 - CodeSpace Code = 57 - CodeCapsLock Code = 58 - CodeF1 Code = 59 - CodeF2 Code = 60 - CodeF3 Code = 61 - CodeF4 Code = 62 - CodeF5 Code = 63 - CodeF6 Code = 64 - CodeF7 Code = 65 - CodeF8 Code = 66 - CodeF9 Code = 67 - CodeF10 Code = 68 - CodeNumlock Code = 69 - CodeScrollLock Code = 70 - CodeKP7 Code = 71 - CodeKP8 Code = 72 - CodeKP9 Code = 73 - CodeKPMinus Code = 74 - CodeKP4 Code = 75 - CodeKP5 Code = 76 - CodeKP6 Code = 77 - CodeKPPlus Code = 78 - CodeKP1 Code = 79 - CodeKP2 Code = 80 - CodeKP3 Code = 81 - CodeKP0 Code = 82 - CodeKPDot Code = 83 - CodeF11 Code = 87 - CodeF12 Code = 88 - CodeKPEnter Code = 96 - CodeRightControl Code = 97 - CodeKPSlash Code = 98 - CodeRightAlt Code = 100 - CodeHome Code = 102 - CodeUpArrow Code = 103 - CodePageUp Code = 104 - CodeLeftArrow Code = 105 - CodeRightArrow Code = 106 - CodeEnd Code = 107 - CodeDownArrow Code = 108 - CodePageDown Code = 109 - CodeInsert Code = 110 - CodeDelete Code = 111 + CodeNone Code = 0 + CodeESC Code = 1 + Code1 Code = 2 + Code2 Code = 3 + Code3 Code = 4 + Code4 Code = 5 + Code5 Code = 6 + Code6 Code = 7 + Code7 Code = 8 + Code8 Code = 9 + Code9 Code = 10 + Code0 Code = 11 + CodeMinus Code = 12 + CodeEqual Code = 13 + CodeBackspace Code = 14 + CodeTab Code = 15 + CodeQ Code = 16 + CodeW Code = 17 + CodeE Code = 18 + CodeR Code = 19 + CodeT Code = 20 + CodeY Code = 21 + CodeU Code = 22 + CodeI Code = 23 + CodeO Code = 24 + CodeP Code = 25 + CodeLeftBrack Code = 26 + CodeRightBrace Code = 27 + CodeEnter Code = 28 + CodeLeftCntl Code = 29 + CodeA Code = 30 + CodeS Code = 31 + CodeD Code = 32 + CodeF Code = 33 + CodeG Code = 34 + CodeH Code = 35 + CodeJ Code = 36 + CodeK Code = 37 + CodeL Code = 38 + CodeSemicolon Code = 39 + CodeApostrophe Code = 40 + CodeGrave Code = 41 + CodeLeftShift Code = 42 + CodeBackslash Code = 43 + CodeZ Code = 44 + CodeX Code = 45 + CodeC Code = 46 + CodeV Code = 47 + CodeB Code = 48 + CodeN Code = 49 + CodeM Code = 50 + CodeComma Code = 51 + CodeDot Code = 52 + CodeSlash Code = 53 + CodeRightShift Code = 54 + CodeKPAsterisk Code = 55 + CodeLeftAlt Code = 56 + CodeSpace Code = 57 + CodeCapsLock Code = 58 + CodeF1 Code = 59 + CodeF2 Code = 60 + CodeF3 Code = 61 + CodeF4 Code = 62 + CodeF5 Code = 63 + CodeF6 Code = 64 + CodeF7 Code = 65 + CodeF8 Code = 66 + CodeF9 Code = 67 + CodeF10 Code = 68 + CodeNumlock Code = 69 + CodeScrollLock Code = 70 + CodeKP7 Code = 71 + CodeKP8 Code = 72 + CodeKP9 Code = 73 + CodeKPMinus Code = 74 + CodeKP4 Code = 75 + CodeKP5 Code = 76 + CodeKP6 Code = 77 + CodeKPPlus Code = 78 + CodeKP1 Code = 79 + CodeKP2 Code = 80 + CodeKP3 Code = 81 + CodeKP0 Code = 82 + CodeKPDot Code = 83 + CodeF11 Code = 87 + CodeF12 Code = 88 + CodeKPEnter Code = 96 + CodeRightControl Code = 97 + CodeKPSlash Code = 98 + CodeRightAlt Code = 100 + CodeHome Code = 102 + CodeUpArrow Code = 103 + CodePageUp Code = 104 + CodeLeftArrow Code = 105 + CodeRightArrow Code = 106 + CodeEnd Code = 107 + CodeDownArrow Code = 108 + CodePageDown Code = 109 + CodeInsert Code = 110 + CodeDelete Code = 111 ) diff --git a/ui/bind/popup.go b/ui/bind/popup.go index fd3da89..ef634ed 100644 --- a/ui/bind/popup.go +++ b/ui/bind/popup.go @@ -26,29 +26,24 @@ type Page struct { //TypeKey event on key func (bp *Page) TypeKey(e *fyne.KeyEvent) { bp.Bind.Bound = keys.CKIFyneKeyMap(e.Name) - kp := keys.CKIKeyNameFromASCII(bp.Bind.Bound) + kp := keys.CKIKeyNameFromKC(bp.Bind.Bound) bp.dev["BL"].(*widget.Label).SetText(kp) } func (bp *Page) createGrid() *fyne.Container { - cont := fyne.NewContainerWithLayout(layout.NewGridLayoutWithColumns(3)) + cont := fyne.NewContainerWithLayout(layout.NewGridLayoutWithColumns(4)) cont.AddObject(widget.NewButton("Clear", func() { - bp.dev["BL"].(*widget.Label).SetText(keys.CKIKeyNameFromKC(0)) bp.Bind.Bound = 0x0 + bp.dev["BL"].(*widget.Label).SetText(keys.CKIKeyNameFromKC(bp.Bind.Bound)) })) k1 := widget.NewButton("Tab", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyTab}) }) - k2 := widget.NewButton("Left Alt", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyAltLeft}) }) - k3 := widget.NewButton("Right Alt", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyAltRight}) }) - k4 := widget.NewButton("Left Control", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyControlLeft}) }) - k5 := widget.NewButton("Right Contorl", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyControlRight}) }) - k6 := widget.NewButton("Left Shift", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyShiftLeft}) }) - k7 := widget.NewButton("Right Shift", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyShiftRight}) }) + k3 := widget.NewButton("Left Alt", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyAltLeft}) }) + k5 := widget.NewButton("Left Control", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyControlLeft}) }) + k7 := widget.NewButton("Left Shift", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyShiftLeft}) }) + //k8 := widget.NewButton("Grave (`)", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyBackTick}) }) cont.AddObject(k1) - cont.AddObject(k2) cont.AddObject(k3) - cont.AddObject(k4) cont.AddObject(k5) - cont.AddObject(k6) cont.AddObject(k7) return cont } @@ -56,7 +51,7 @@ 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) - bp.dev["BL"] = widget.NewLabel(keys.CKIKeyNameFromASCII(bp.Bind.Bound)) + bp.dev["BL"] = widget.NewLabel(keys.CKIKeyNameFromKC(bp.Bind.Bound)) pop := widget.NewVBox(bp.dev["BL"], bp.createGrid()) bp.window.Canvas().SetOnTypedKey(bp.TypeKey) return pop