pull/1/head
Minizbot2012 3 years ago
parent a076297776
commit 80b68f1c39

@ -1,3 +1,3 @@
# These are supported funding model platforms # These are supported funding model platforms
github: [minizbot2012] github: [minizbot2012]

@ -1,2 +1,2 @@
Orbweaver Mapping utility for orbmap Orbweaver Mapping utility for orbmap
```go get github.com/OrbTools/orbbind``` ```go get github.com/OrbTools/orbbind```

@ -1,131 +1,131 @@
package keys package keys
// Common Interface 2, natified go // Common Interface 2, natified go
import ( import (
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/driver/desktop" "fyne.io/fyne/v2/driver/desktop"
) )
//ASCIIToKC -- ASCII Value to a KBD Scancode //ASCIIToKC -- ASCII Value to a KBD Scancode
var ASCIIToKC = map[rune]Code{ var ASCIIToKC = map[rune]Code{
'a': CodeA, 'a': CodeA,
'b': CodeB, 'b': CodeB,
'c': CodeC, 'c': CodeC,
'd': CodeD, 'd': CodeD,
'e': CodeE, 'e': CodeE,
'f': CodeF, 'f': CodeF,
'g': CodeG, 'g': CodeG,
'h': CodeH, 'h': CodeH,
'i': CodeI, 'i': CodeI,
'k': CodeK, 'k': CodeK,
'l': CodeL, 'l': CodeL,
'm': CodeM, 'm': CodeM,
'n': CodeN, 'n': CodeN,
'o': CodeO, 'o': CodeO,
'p': CodeP, 'p': CodeP,
'q': CodeQ, 'q': CodeQ,
'r': CodeR, 'r': CodeR,
's': CodeS, 's': CodeS,
't': CodeT, 't': CodeT,
'u': CodeU, 'u': CodeU,
'v': CodeV, 'v': CodeV,
'w': CodeW, 'w': CodeW,
'x': CodeX, 'x': CodeX,
'y': CodeY, 'y': CodeY,
'z': CodeZ, 'z': CodeZ,
'0': Code0, '0': Code0,
'1': Code1, '1': Code1,
'2': Code2, '2': Code2,
'3': Code3, '3': Code3,
'4': Code4, '4': Code4,
'5': Code5, '5': Code5,
'6': Code6, '6': Code6,
'7': Code7, '7': Code7,
'8': Code8, '8': Code8,
'9': Code9, '9': Code9,
' ': CodeSpace, ' ': CodeSpace,
'-': CodeMinus, '-': CodeMinus,
'=': CodeEqual, '=': CodeEqual,
'[': CodeLeftBrack, '[': CodeLeftBrack,
']': CodeRightBrace, ']': CodeRightBrace,
'\\': CodeBackslash, '\\': CodeBackslash,
';': CodeSemicolon, ';': CodeSemicolon,
'\'': CodeApostrophe, '\'': CodeApostrophe,
'`': CodeGrave, '`': CodeGrave,
',': CodeComma, ',': CodeComma,
'.': CodeDot, '.': CodeDot,
'/': CodeSlash, '/': CodeSlash,
} }
//FyneToKC - conversion between fyne to ode //FyneToKC - conversion between fyne to ode
var FyneToKC = map[fyne.KeyName]Code{ var FyneToKC = map[fyne.KeyName]Code{
fyne.Key0: Code0, fyne.Key0: Code0,
fyne.Key1: Code1, fyne.Key1: Code1,
fyne.Key2: Code2, fyne.Key2: Code2,
fyne.Key3: Code3, fyne.Key3: Code3,
fyne.Key4: Code4, fyne.Key4: Code4,
fyne.Key5: Code5, fyne.Key5: Code5,
fyne.Key6: Code6, fyne.Key6: Code6,
fyne.Key7: Code7, fyne.Key7: Code7,
fyne.Key8: Code8, fyne.Key8: Code8,
fyne.Key9: Code9, fyne.Key9: Code9,
fyne.KeyA: CodeA, fyne.KeyA: CodeA,
fyne.KeyB: CodeB, fyne.KeyB: CodeB,
fyne.KeyC: CodeC, fyne.KeyC: CodeC,
fyne.KeyD: CodeD, fyne.KeyD: CodeD,
fyne.KeyE: CodeE, fyne.KeyE: CodeE,
fyne.KeyF: CodeF, fyne.KeyF: CodeF,
fyne.KeyG: CodeG, fyne.KeyG: CodeG,
fyne.KeyH: CodeH, fyne.KeyH: CodeH,
fyne.KeyI: CodeI, fyne.KeyI: CodeI,
fyne.KeyJ: CodeJ, fyne.KeyJ: CodeJ,
fyne.KeyK: CodeK, fyne.KeyK: CodeK,
fyne.KeyL: CodeL, fyne.KeyL: CodeL,
fyne.KeyM: CodeM, fyne.KeyM: CodeM,
fyne.KeyN: CodeN, fyne.KeyN: CodeN,
fyne.KeyO: CodeO, fyne.KeyO: CodeO,
fyne.KeyP: CodeP, fyne.KeyP: CodeP,
fyne.KeyQ: CodeQ, fyne.KeyQ: CodeQ,
fyne.KeyR: CodeR, fyne.KeyR: CodeR,
fyne.KeyS: CodeS, fyne.KeyS: CodeS,
fyne.KeyT: CodeT, fyne.KeyT: CodeT,
fyne.KeyU: CodeU, fyne.KeyU: CodeU,
fyne.KeyV: CodeV, fyne.KeyV: CodeV,
fyne.KeyW: CodeW, fyne.KeyW: CodeW,
fyne.KeyX: CodeX, fyne.KeyX: CodeX,
fyne.KeyY: CodeY, fyne.KeyY: CodeY,
fyne.KeyZ: CodeZ, fyne.KeyZ: CodeZ,
fyne.KeyUp: CodeUpArrow, fyne.KeyUp: CodeUpArrow,
fyne.KeyDown: CodeDownArrow, fyne.KeyDown: CodeDownArrow,
fyne.KeyRight: CodeRightArrow, fyne.KeyRight: CodeRightArrow,
fyne.KeyLeft: CodeLeftArrow, fyne.KeyLeft: CodeLeftArrow,
fyne.KeyEnd: CodeEnd, fyne.KeyEnd: CodeEnd,
fyne.KeyHome: CodeHome, fyne.KeyHome: CodeHome,
fyne.KeyInsert: CodeInsert, fyne.KeyInsert: CodeInsert,
fyne.KeyDelete: CodeDelete, fyne.KeyDelete: CodeDelete,
fyne.KeyEnter: CodeEnter, fyne.KeyEnter: CodeEnter,
fyne.KeyTab: CodeTab, fyne.KeyTab: CodeTab,
fyne.KeyEscape: CodeESC, fyne.KeyEscape: CodeESC,
fyne.KeyF1: CodeF1, fyne.KeyF1: CodeF1,
fyne.KeyF2: CodeF2, fyne.KeyF2: CodeF2,
fyne.KeyF3: CodeF3, fyne.KeyF3: CodeF3,
fyne.KeyF4: CodeF4, fyne.KeyF4: CodeF4,
fyne.KeyF5: CodeF5, fyne.KeyF5: CodeF5,
fyne.KeyF6: CodeF6, fyne.KeyF6: CodeF6,
fyne.KeyF7: CodeF7, fyne.KeyF7: CodeF7,
fyne.KeyF8: CodeF8, fyne.KeyF8: CodeF8,
fyne.KeyF9: CodeF9, fyne.KeyF9: CodeF9,
fyne.KeyF10: CodeF10, fyne.KeyF10: CodeF10,
fyne.KeyF11: CodeF11, fyne.KeyF11: CodeF11,
fyne.KeyF12: CodeF12, fyne.KeyF12: CodeF12,
fyne.KeyPageDown: CodePageDown, fyne.KeyPageDown: CodePageDown,
fyne.KeyPageUp: CodePageUp, fyne.KeyPageUp: CodePageUp,
fyne.KeySpace: CodeSpace, fyne.KeySpace: CodeSpace,
fyne.KeyBackTick: CodeGrave, fyne.KeyBackTick: CodeGrave,
desktop.KeyAltLeft: CodeLeftAlt, desktop.KeyAltLeft: CodeLeftAlt,
desktop.KeyAltRight: CodeRightAlt, desktop.KeyAltRight: CodeRightAlt,
desktop.KeyControlLeft: CodeLeftCntl, desktop.KeyControlLeft: CodeLeftCntl,
desktop.KeyControlRight: CodeRightControl, desktop.KeyControlRight: CodeRightControl,
desktop.KeyShiftLeft: CodeLeftShift, desktop.KeyShiftLeft: CodeLeftShift,
desktop.KeyShiftRight: CodeRightShift, desktop.KeyShiftRight: CodeRightShift,
} }

@ -1,45 +1,45 @@
package keys package keys
import ( import (
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
) )
var ( var (
//KCToASCII keycode to ascii table //KCToASCII keycode to ascii table
KCToASCII map[Code]rune KCToASCII map[Code]rune
) )
//GetASCIIForSC Returns Ascii for Scancode //GetASCIIForSC Returns Ascii for Scancode
func GetASCIIForSC(r uint16) uint16 { func GetASCIIForSC(r uint16) uint16 {
return uint16(KCToASCII[Code(r)]) return uint16(KCToASCII[Code(r)])
} }
//GetSCForASCII Returns scancode For Ascii //GetSCForASCII Returns scancode For Ascii
func GetSCForASCII(r uint16) uint16 { func GetSCForASCII(r uint16) uint16 {
return uint16(ASCIIToKC[rune(r)]) return uint16(ASCIIToKC[rune(r)])
} }
func init() { func init() {
KCToASCII = make(map[Code]rune) KCToASCII = make(map[Code]rune)
for x, y := range ASCIIToKC { for x, y := range ASCIIToKC {
KCToASCII[y] = x KCToASCII[y] = x
} }
} }
//CKIFyneKeyMap Control Keys interop //CKIFyneKeyMap Control Keys interop
func CKIFyneKeyMap(e fyne.KeyName) uint16 { func CKIFyneKeyMap(e fyne.KeyName) uint16 {
if val, ok := FyneToKC[e]; ok { if val, ok := FyneToKC[e]; ok {
return uint16(val) return uint16(val)
} }
return 0 return 0
} }
//CKIKeyNameFromKC Key Name from Keycode //CKIKeyNameFromKC Key Name from Keycode
func CKIKeyNameFromKC(r uint16) string { func CKIKeyNameFromKC(r uint16) string {
return Code(r).String()[4:] return Code(r).String()[4:]
} }
//CKIKeyNameFromASCII key name from ascii code //CKIKeyNameFromASCII key name from ascii code
func CKIKeyNameFromASCII(r uint16) string { func CKIKeyNameFromASCII(r uint16) string {
return ASCIIToKC[rune(r)].String()[4:] return ASCIIToKC[rune(r)].String()[4:]
} }

@ -1,109 +1,109 @@
//go:generate stringer --type Code //go:generate stringer --type Code
//Package keys provides back end keymapping //Package keys provides back end keymapping
package keys package keys
//Code ScanCode object //Code ScanCode object
type Code uint16 type Code uint16
const ( const (
CodeNone Code = 0 CodeNone Code = 0
CodeESC Code = 1 CodeESC Code = 1
Code1 Code = 2 Code1 Code = 2
Code2 Code = 3 Code2 Code = 3
Code3 Code = 4 Code3 Code = 4
Code4 Code = 5 Code4 Code = 5
Code5 Code = 6 Code5 Code = 6
Code6 Code = 7 Code6 Code = 7
Code7 Code = 8 Code7 Code = 8
Code8 Code = 9 Code8 Code = 9
Code9 Code = 10 Code9 Code = 10
Code0 Code = 11 Code0 Code = 11
CodeMinus Code = 12 CodeMinus Code = 12
CodeEqual Code = 13 CodeEqual Code = 13
CodeBackspace Code = 14 CodeBackspace Code = 14
CodeTab Code = 15 CodeTab Code = 15
CodeQ Code = 16 CodeQ Code = 16
CodeW Code = 17 CodeW Code = 17
CodeE Code = 18 CodeE Code = 18
CodeR Code = 19 CodeR Code = 19
CodeT Code = 20 CodeT Code = 20
CodeY Code = 21 CodeY Code = 21
CodeU Code = 22 CodeU Code = 22
CodeI Code = 23 CodeI Code = 23
CodeO Code = 24 CodeO Code = 24
CodeP Code = 25 CodeP Code = 25
CodeLeftBrack Code = 26 CodeLeftBrack Code = 26
CodeRightBrace Code = 27 CodeRightBrace Code = 27
CodeEnter Code = 28 CodeEnter Code = 28
CodeLeftCntl Code = 29 CodeLeftCntl Code = 29
CodeA Code = 30 CodeA Code = 30
CodeS Code = 31 CodeS Code = 31
CodeD Code = 32 CodeD Code = 32
CodeF Code = 33 CodeF Code = 33
CodeG Code = 34 CodeG Code = 34
CodeH Code = 35 CodeH Code = 35
CodeJ Code = 36 CodeJ Code = 36
CodeK Code = 37 CodeK Code = 37
CodeL Code = 38 CodeL Code = 38
CodeSemicolon Code = 39 CodeSemicolon Code = 39
CodeApostrophe Code = 40 CodeApostrophe Code = 40
CodeGrave Code = 41 CodeGrave Code = 41
CodeLeftShift Code = 42 CodeLeftShift Code = 42
CodeBackslash Code = 43 CodeBackslash Code = 43
CodeZ Code = 44 CodeZ Code = 44
CodeX Code = 45 CodeX Code = 45
CodeC Code = 46 CodeC Code = 46
CodeV Code = 47 CodeV Code = 47
CodeB Code = 48 CodeB Code = 48
CodeN Code = 49 CodeN Code = 49
CodeM Code = 50 CodeM Code = 50
CodeComma Code = 51 CodeComma Code = 51
CodeDot Code = 52 CodeDot Code = 52
CodeSlash Code = 53 CodeSlash Code = 53
CodeRightShift Code = 54 CodeRightShift Code = 54
CodeKPAsterisk Code = 55 CodeKPAsterisk Code = 55
CodeLeftAlt Code = 56 CodeLeftAlt Code = 56
CodeSpace Code = 57 CodeSpace Code = 57
CodeCapsLock Code = 58 CodeCapsLock Code = 58
CodeF1 Code = 59 CodeF1 Code = 59
CodeF2 Code = 60 CodeF2 Code = 60
CodeF3 Code = 61 CodeF3 Code = 61
CodeF4 Code = 62 CodeF4 Code = 62
CodeF5 Code = 63 CodeF5 Code = 63
CodeF6 Code = 64 CodeF6 Code = 64
CodeF7 Code = 65 CodeF7 Code = 65
CodeF8 Code = 66 CodeF8 Code = 66
CodeF9 Code = 67 CodeF9 Code = 67
CodeF10 Code = 68 CodeF10 Code = 68
CodeNumlock Code = 69 CodeNumlock Code = 69
CodeScrollLock Code = 70 CodeScrollLock Code = 70
CodeKP7 Code = 71 CodeKP7 Code = 71
CodeKP8 Code = 72 CodeKP8 Code = 72
CodeKP9 Code = 73 CodeKP9 Code = 73
CodeKPMinus Code = 74 CodeKPMinus Code = 74
CodeKP4 Code = 75 CodeKP4 Code = 75
CodeKP5 Code = 76 CodeKP5 Code = 76
CodeKP6 Code = 77 CodeKP6 Code = 77
CodeKPPlus Code = 78 CodeKPPlus Code = 78
CodeKP1 Code = 79 CodeKP1 Code = 79
CodeKP2 Code = 80 CodeKP2 Code = 80
CodeKP3 Code = 81 CodeKP3 Code = 81
CodeKP0 Code = 82 CodeKP0 Code = 82
CodeKPDot Code = 83 CodeKPDot Code = 83
CodeF11 Code = 87 CodeF11 Code = 87
CodeF12 Code = 88 CodeF12 Code = 88
CodeKPEnter Code = 96 CodeKPEnter Code = 96
CodeRightControl Code = 97 CodeRightControl Code = 97
CodeKPSlash Code = 98 CodeKPSlash Code = 98
CodeRightAlt Code = 100 CodeRightAlt Code = 100
CodeHome Code = 102 CodeHome Code = 102
CodeUpArrow Code = 103 CodeUpArrow Code = 103
CodePageUp Code = 104 CodePageUp Code = 104
CodeLeftArrow Code = 105 CodeLeftArrow Code = 105
CodeRightArrow Code = 106 CodeRightArrow Code = 106
CodeEnd Code = 107 CodeEnd Code = 107
CodeDownArrow Code = 108 CodeDownArrow Code = 108
CodePageDown Code = 109 CodePageDown Code = 109
CodeInsert Code = 110 CodeInsert Code = 110
CodeDelete Code = 111 CodeDelete Code = 111
) )

@ -1,66 +1,66 @@
package bind package bind
import ( import (
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/driver/desktop" "fyne.io/fyne/v2/driver/desktop"
"fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
"github.com/OrbTools/OrbBind/keys" "github.com/OrbTools/OrbBind/keys"
) )
//BindingInfo Genral data to use in a channel //BindingInfo Genral data to use in a channel
type BindingInfo struct { type BindingInfo struct {
Bindid int Bindid int
Bound uint16 Bound uint16
} }
//Page Binding UI //Page Binding UI
type Page struct { type Page struct {
dev map[string]fyne.CanvasObject dev map[string]fyne.CanvasObject
Bind BindingInfo Bind BindingInfo
window fyne.Window window fyne.Window
} }
//TypeKey event on key //TypeKey event on key
func (bp *Page) TypeKey(e *fyne.KeyEvent) { func (bp *Page) TypeKey(e *fyne.KeyEvent) {
bp.Bind.Bound = keys.CKIFyneKeyMap(e.Name) bp.Bind.Bound = keys.CKIFyneKeyMap(e.Name)
kp := keys.CKIKeyNameFromKC(bp.Bind.Bound) kp := keys.CKIKeyNameFromKC(bp.Bind.Bound)
bp.dev["BL"].(*widget.Label).SetText(kp) bp.dev["BL"].(*widget.Label).SetText(kp)
} }
func (bp *Page) createGrid() *fyne.Container { func (bp *Page) createGrid() *fyne.Container {
cont := fyne.NewContainerWithLayout(layout.NewGridLayoutWithColumns(4)) cont := fyne.NewContainerWithLayout(layout.NewGridLayoutWithColumns(4))
cont.AddObject(widget.NewButton("Clear", func() { cont.AddObject(widget.NewButton("Clear", func() {
bp.Bind.Bound = 0x0 bp.Bind.Bound = 0x0
bp.dev["BL"].(*widget.Label).SetText(keys.CKIKeyNameFromKC(bp.Bind.Bound)) bp.dev["BL"].(*widget.Label).SetText(keys.CKIKeyNameFromKC(bp.Bind.Bound))
})) }))
k1 := widget.NewButton("Tab", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyTab}) }) k1 := widget.NewButton("Tab", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyTab}) })
k3 := widget.NewButton("Left Alt", func() { bp.TypeKey(&fyne.KeyEvent{Name: desktop.KeyAltLeft}) }) 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}) }) 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}) }) 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}) }) //k8 := widget.NewButton("Grave (`)", func() { bp.TypeKey(&fyne.KeyEvent{Name: fyne.KeyBackTick}) })
cont.AddObject(k1) cont.AddObject(k1)
cont.AddObject(k3) cont.AddObject(k3)
cont.AddObject(k5) cont.AddObject(k5)
cont.AddObject(k7) cont.AddObject(k7)
return cont return cont
} }
//Create the binding page popup //Create the binding page popup
func (bp *Page) Create(bid string) fyne.CanvasObject { func (bp *Page) Create(bid string) fyne.CanvasObject {
bp.dev = make(map[string]fyne.CanvasObject) bp.dev = make(map[string]fyne.CanvasObject)
bp.dev["BL"] = widget.NewLabel(keys.CKIKeyNameFromKC(bp.Bind.Bound)) bp.dev["BL"] = widget.NewLabel(keys.CKIKeyNameFromKC(bp.Bind.Bound))
pop := container.NewVBox(bp.dev["BL"], bp.createGrid()) pop := container.NewVBox(bp.dev["BL"], bp.createGrid())
bp.window.Canvas().SetOnTypedKey(bp.TypeKey) bp.window.Canvas().SetOnTypedKey(bp.TypeKey)
return pop return pop
} }
//NewBindPage Create a new bind popup //NewBindPage Create a new bind popup
func NewBindPage(bid int, w fyne.Window, def uint16) *Page { func NewBindPage(bid int, w fyne.Window, def uint16) *Page {
p := new(Page) p := new(Page)
p.window = w p.window = w
p.Bind.Bindid = bid p.Bind.Bindid = bid
p.Bind.Bound = def p.Bind.Bound = def
return p return p
} }

Loading…
Cancel
Save