From af5653f2c16460fb4ec7c03a7185020689192eb0 Mon Sep 17 00:00:00 2001 From: Minizbot2012 Date: Wed, 28 Jul 2021 01:56:16 -0400 Subject: [PATCH] XDR compatible build mode (changes orb format) --- devices/devices.go | 41 ------------------------- devices/devices_json.go | 44 +++++++++++++++++++++++++++ devices/devices_xdr.go | 40 ++++++++++++++++++++++++ devices/translator/jsoxdr.go | 22 ++++++++++++++ devices/xdr/orbweaver.bin | Bin 0 -> 560 bytes go.mod | 2 ++ go.sum | 2 ++ hid/generated.bin | Bin 0 -> 37912 bytes hid/generator/gen.go | 5 +++ hid/{hid.go => hid_json.go} | 2 ++ hid/hid_xdr.go | 57 +++++++++++++++++++++++++++++++++++ module.go | 1 + 12 files changed, 175 insertions(+), 41 deletions(-) create mode 100644 devices/devices_json.go create mode 100644 devices/devices_xdr.go create mode 100644 devices/translator/jsoxdr.go create mode 100644 devices/xdr/orbweaver.bin create mode 100644 go.sum create mode 100644 hid/generated.bin rename hid/{hid.go => hid_json.go} (98%) create mode 100644 hid/hid_xdr.go diff --git a/devices/devices.go b/devices/devices.go index 82d28f5..7370c67 100644 --- a/devices/devices.go +++ b/devices/devices.go @@ -1,15 +1,5 @@ package devices -import ( - "embed" - "encoding/binary" - "encoding/json" - "io" - "io/fs" - "os" - "strings" -) - //KeyMap singular keymap type KeyMap struct { Keymap []uint16 @@ -23,9 +13,6 @@ type KeyMaps struct { MCount int } -//go:embed json/* -var jsons embed.FS - type DeviceDef struct { Backend string IsColor bool @@ -49,31 +36,3 @@ type DeviceDef struct { } var DeviceTypes map[string]*DeviceDef - -func init() { - DeviceTypes = make(map[string]*DeviceDef) - files, _ := fs.ReadDir(jsons, "json") - for _, file := range files { - dev := new(DeviceDef) - data, _ := jsons.ReadFile("json/" + file.Name()) - json.Unmarshal(data, dev) - DeviceTypes[strings.Split(file.Name(), ".")[0]] = dev - } -} - -//LoadKM Load Orbmap KM structure -func LoadKeymap(file string, dev *DeviceDef) *KeyMap { - mapped := new(KeyMap) - of, _ := os.Open(file) - defer of.Close() - mapped.Keymap = make([]uint16, dev.NumKeys) - binary.Read(of, binary.LittleEndian, mapped.Keymap) - binary.Read(of, binary.LittleEndian, mapped.Color) - return mapped -} - -//SavePKMKeymap saves an orb after edit -func SaveKeymap(mapped interface{}, file io.WriteCloser) { - binary.Write(file, binary.LittleEndian, mapped) - file.Close() -} diff --git a/devices/devices_json.go b/devices/devices_json.go new file mode 100644 index 0000000..760884f --- /dev/null +++ b/devices/devices_json.go @@ -0,0 +1,44 @@ +// +build !xdr + +package devices + +import ( + "embed" + "encoding/binary" + "encoding/json" + "io" + "io/fs" + "os" + "strings" +) + +//go:embed json/* +var data embed.FS + +func init() { + DeviceTypes = make(map[string]*DeviceDef) + files, _ := fs.ReadDir(data, "json") + for _, file := range files { + dev := new(DeviceDef) + data, _ := data.ReadFile("json/" + file.Name()) + json.Unmarshal(data, dev) + DeviceTypes[strings.Split(file.Name(), ".")[0]] = dev + } +} + +//LoadKM Load Orbmap KM structure +func LoadKeymap(file string, dev *DeviceDef) *KeyMap { + mapped := new(KeyMap) + of, _ := os.Open(file) + defer of.Close() + mapped.Keymap = make([]uint16, dev.NumKeys) + binary.Read(of, binary.LittleEndian, mapped.Keymap) + binary.Read(of, binary.LittleEndian, mapped.Color) + return mapped +} + +//SavePKMKeymap saves an orb after edit +func SaveKeymap(mapped interface{}, file io.WriteCloser) { + binary.Write(file, binary.LittleEndian, mapped) + file.Close() +} diff --git a/devices/devices_xdr.go b/devices/devices_xdr.go new file mode 100644 index 0000000..cc7ab62 --- /dev/null +++ b/devices/devices_xdr.go @@ -0,0 +1,40 @@ +// +build xdr + +package devices + +import ( + "embed" + "github.com/davecgh/go-xdr/xdr2" + "io" + "io/fs" + "os" + "strings" +) + +//go:embed xdr/* +var data embed.FS + +func init() { + DeviceTypes = make(map[string]*DeviceDef) + files, _ := fs.ReadDir(data, "xdr") + for _, file := range files { + dev := new(DeviceDef) + data, _ := jsons.ReadFile("xdr/" + file.Name()) + xdr2.Unmarshal(data, dev) + DeviceTypes[strings.Split(file.Name(), ".")[0]] = dev + } +} + +//LoadKM Load Orbmap KM structure +func LoadKeymap(file string, dev *DeviceDef) *KeyMap { + mapped := new(KeyMap) + of, _ := os.Open(file) + xdr.Unmarshal(of, KeyMap) + return mapped +} + +//SavePKMKeymap saves an orb after edit +func SaveKeymap(mapped interface{}, file io.WriteCloser) { + xdr.Marshal(file, mapped) + file.Close() +} diff --git a/devices/translator/jsoxdr.go b/devices/translator/jsoxdr.go new file mode 100644 index 0000000..864e890 --- /dev/null +++ b/devices/translator/jsoxdr.go @@ -0,0 +1,22 @@ +package main + +import ( + "encoding/json" + "os" + "strings" + + "github.com/OrbTools/OrbCommon/devices" + xdr "github.com/davecgh/go-xdr/xdr2" +) + +func main() { + files, _ := os.ReadDir("devices/json/") + for _, file := range files { + data, _ := os.ReadFile("devices/json/" + file.Name()) + DevDef := &devices.DeviceDef{} + json.Unmarshal(data, DevDef) + xdo, _ := os.Create("devices/xdr/" + strings.Split(file.Name(), ".")[0] + ".bin") + xdr.Marshal(xdo, DevDef) + xdo.Close() + } +} diff --git a/devices/xdr/orbweaver.bin b/devices/xdr/orbweaver.bin new file mode 100644 index 0000000000000000000000000000000000000000..73474354a61a38691fc6d4e48657fdc59ad96f08 GIT binary patch literal 560 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 Ldx-sw-xvQsl{gDC literal 0 HcmV?d00001 diff --git a/hid/generator/gen.go b/hid/generator/gen.go index e2f6585..a62dca3 100644 --- a/hid/generator/gen.go +++ b/hid/generator/gen.go @@ -7,6 +7,8 @@ import ( "os" "regexp" "strconv" + + xdr "github.com/davecgh/go-xdr/xdr2" ) type KeyMaps struct { @@ -78,7 +80,10 @@ func main() { } KeyMaps.Arr = Arr out, _ := os.Create("hid/generated.json") + xdo, _ := os.Create("hid/generated.bin") + defer xdo.Close() defer out.Close() jso, _ := json.Marshal(KeyMaps) + xdr.Marshal(xdo, KeyMaps) out.Write(jso) } diff --git a/hid/hid.go b/hid/hid_json.go similarity index 98% rename from hid/hid.go rename to hid/hid_json.go index af75307..5f8906f 100644 --- a/hid/hid.go +++ b/hid/hid_json.go @@ -1,3 +1,5 @@ +// +build !xdr + package hid import ( diff --git a/hid/hid_xdr.go b/hid/hid_xdr.go new file mode 100644 index 0000000..187bbc8 --- /dev/null +++ b/hid/hid_xdr.go @@ -0,0 +1,57 @@ +// +build xdr + +package hid + +import ( + "bytes" + _ "embed" + xdr "github.com/davecgh/go-xdr/xdr2" +) + +type KeyMaps struct { + Usb map[uint16]Key + Evdev map[uint16]Key + Xkb map[uint16]Key + Win map[uint16]Key + Mac map[uint16]Key + Code map[string]Key + Arr []Key +} + +type Key struct { + Usb uint16 + Evdev uint16 + Xkb uint16 + Win uint16 + Mac uint16 + Code string +} + +var Mappings KeyMaps = KeyMaps{} + +//go:embed generated.bin +var file []byte + +func init() { + xdr.Unmarshal(bytes.NewReader(file), Mappings) +} + +func GetMappingFromHID(uv uint16) Key { + return Mappings.Usb[uv] +} + +func GetMappingFromWindows(uv uint16) Key { + return Mappings.Win[uv] +} + +func GetMappingFromLinux(uv uint16) Key { + return Mappings.Evdev[uv] +} + +func GetMappingFromName(name string) Key { + return Mappings.Code[name] +} + +func GetMappingFromX(code uint16) Key { + return Mappings.Xkb[code] +} diff --git a/module.go b/module.go index d0d85fe..8250109 100644 --- a/module.go +++ b/module.go @@ -1,3 +1,4 @@ package OrbCommon //go:generate go run hid/generator/gen.go +//go:generate go run devices/translator/jsoxdr.go