mirror of https://github.com/OrbTools/OrbMap
go get -u && go mod tidy
parent
9376aa8318
commit
14bb7f95af
@ -1,36 +1,36 @@
|
||||
package orbweaver
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
morb "github.com/OrbTools/OrbCommon/devices/orbweaver"
|
||||
)
|
||||
|
||||
var eventcodes []byte
|
||||
var ecm map[uint16]int
|
||||
|
||||
func init() {
|
||||
ecm = make(map[uint16]int)
|
||||
}
|
||||
|
||||
//ProcOrbFiles processes orbs
|
||||
func ProcOrbFiles(orbs string) *morb.KeyMaps {
|
||||
keymaps := &morb.KeyMaps{Currentmap: 0}
|
||||
if len(orbs) > 0 {
|
||||
for idx, orb := range strings.Split(orbs, ";") {
|
||||
abs, err := filepath.Abs(orb)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("Loading Orb " + abs)
|
||||
KMap := morb.LoadKM(abs)
|
||||
keymaps.Maps[idx] = KMap
|
||||
}
|
||||
keymaps.MCount = len(orbs)
|
||||
} else {
|
||||
panic("No orbs")
|
||||
}
|
||||
return keymaps
|
||||
}
|
||||
package orbweaver
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
morb "github.com/OrbTools/OrbCommon/devices/orbweaver"
|
||||
)
|
||||
|
||||
var eventcodes []byte
|
||||
var ecm map[uint16]int
|
||||
|
||||
func init() {
|
||||
ecm = make(map[uint16]int)
|
||||
}
|
||||
|
||||
//ProcOrbFiles processes orbs
|
||||
func ProcOrbFiles(orbs string) *morb.KeyMaps {
|
||||
keymaps := &morb.KeyMaps{Currentmap: 0}
|
||||
if len(orbs) > 0 {
|
||||
for idx, orb := range strings.Split(orbs, ";") {
|
||||
abs, err := filepath.Abs(orb)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Println("Loading Orb " + abs)
|
||||
KMap := morb.LoadKM(abs)
|
||||
keymaps.Maps[idx] = KMap
|
||||
}
|
||||
keymaps.MCount = len(orbs)
|
||||
} else {
|
||||
panic("No orbs")
|
||||
}
|
||||
return keymaps
|
||||
}
|
||||
|
@ -1,32 +1,32 @@
|
||||
// +build linux !windows
|
||||
|
||||
package emu
|
||||
|
||||
import (
|
||||
"github.com/OrbTools/OrbMap/keyevents"
|
||||
"github.com/bendahl/uinput"
|
||||
)
|
||||
|
||||
var vkm uinput.Keyboard = nil
|
||||
|
||||
//ProcKey keyboard emulator loop
|
||||
func ProcKey(kb chan *keyevents.KeyEvent) {
|
||||
println("Emu Unix Starting")
|
||||
var err error
|
||||
vkm, err = uinput.CreateKeyboard("/dev/uinput", []byte("Orbmap"))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer vkm.Close()
|
||||
for {
|
||||
KeyEv := <-kb
|
||||
if KeyEv.Type == 1 {
|
||||
if KeyEv.Value == 1 {
|
||||
vkm.KeyDown(int(KeyEv.Code))
|
||||
} else if KeyEv.Value == 2 {
|
||||
} else {
|
||||
vkm.KeyUp(int(KeyEv.Code))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// +build linux !windows
|
||||
|
||||
package emu
|
||||
|
||||
import (
|
||||
"github.com/OrbTools/OrbMap/keyevents"
|
||||
"github.com/bendahl/uinput"
|
||||
)
|
||||
|
||||
var vkm uinput.Keyboard = nil
|
||||
|
||||
//ProcKey keyboard emulator loop
|
||||
func ProcKey(kb chan *keyevents.KeyEvent) {
|
||||
println("Emu Unix Starting")
|
||||
var err error
|
||||
vkm, err = uinput.CreateKeyboard("/dev/uinput", []byte("Orbmap"))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer vkm.Close()
|
||||
for {
|
||||
KeyEv := <-kb
|
||||
if KeyEv.Type == 1 {
|
||||
if KeyEv.Value == 1 {
|
||||
vkm.KeyDown(int(KeyEv.Code))
|
||||
} else if KeyEv.Value == 2 {
|
||||
} else {
|
||||
vkm.KeyUp(int(KeyEv.Code))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,52 +1,52 @@
|
||||
// +build windows
|
||||
|
||||
package emu
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
|
||||
"github.com/OrbTools/OrbMap/keyevents"
|
||||
"github.com/lxn/win"
|
||||
)
|
||||
|
||||
func downKey(key uint16) {
|
||||
in := []win.KEYBD_INPUT{
|
||||
{
|
||||
Type: win.INPUT_KEYBOARD,
|
||||
Ki: win.KEYBDINPUT{
|
||||
DwExtraInfo: 0,
|
||||
WScan: key,
|
||||
DwFlags: win.KEYEVENTF_SCANCODE,
|
||||
Time: 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
win.SendInput(1, unsafe.Pointer(&in[0]), int32(unsafe.Sizeof(in[0])))
|
||||
}
|
||||
func upKey(key uint16) {
|
||||
in := []win.KEYBD_INPUT{
|
||||
{
|
||||
Type: win.INPUT_KEYBOARD,
|
||||
Ki: win.KEYBDINPUT{
|
||||
DwExtraInfo: 0,
|
||||
WScan: key,
|
||||
DwFlags: win.KEYEVENTF_KEYUP | win.KEYEVENTF_SCANCODE,
|
||||
Time: 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
win.SendInput(1, unsafe.Pointer(&in[0]), int32(unsafe.Sizeof(in[0])))
|
||||
}
|
||||
|
||||
//ProcKey Windows support is so weird
|
||||
func ProcKey(kb chan *keyevents.KeyEvent) {
|
||||
println("Emu Windows Starting")
|
||||
for {
|
||||
KeyEv := <-kb
|
||||
if KeyEv.Type == 1 {
|
||||
downKey(KeyEv.Code)
|
||||
} else if KeyEv.Type == 2 {
|
||||
upKey(KeyEv.Code)
|
||||
}
|
||||
}
|
||||
}
|
||||
// +build windows
|
||||
|
||||
package emu
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
|
||||
"github.com/OrbTools/OrbMap/keyevents"
|
||||
"github.com/lxn/win"
|
||||
)
|
||||
|
||||
func downKey(key uint16) {
|
||||
in := []win.KEYBD_INPUT{
|
||||
{
|
||||
Type: win.INPUT_KEYBOARD,
|
||||
Ki: win.KEYBDINPUT{
|
||||
DwExtraInfo: 0,
|
||||
WScan: key,
|
||||
DwFlags: win.KEYEVENTF_SCANCODE,
|
||||
Time: 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
win.SendInput(1, unsafe.Pointer(&in[0]), int32(unsafe.Sizeof(in[0])))
|
||||
}
|
||||
func upKey(key uint16) {
|
||||
in := []win.KEYBD_INPUT{
|
||||
{
|
||||
Type: win.INPUT_KEYBOARD,
|
||||
Ki: win.KEYBDINPUT{
|
||||
DwExtraInfo: 0,
|
||||
WScan: key,
|
||||
DwFlags: win.KEYEVENTF_KEYUP | win.KEYEVENTF_SCANCODE,
|
||||
Time: 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
win.SendInput(1, unsafe.Pointer(&in[0]), int32(unsafe.Sizeof(in[0])))
|
||||
}
|
||||
|
||||
//ProcKey Windows support is so weird
|
||||
func ProcKey(kb chan *keyevents.KeyEvent) {
|
||||
println("Emu Windows Starting")
|
||||
for {
|
||||
KeyEv := <-kb
|
||||
if KeyEv.Type == 1 {
|
||||
downKey(KeyEv.Code)
|
||||
} else if KeyEv.Type == 2 {
|
||||
upKey(KeyEv.Code)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
package keyevents
|
||||
|
||||
import "syscall"
|
||||
|
||||
//KeyEvent represents a keyevent
|
||||
type KeyEvent struct {
|
||||
Time syscall.Timeval
|
||||
Type uint16
|
||||
Code uint16
|
||||
Value int32
|
||||
}
|
||||
package keyevents
|
||||
|
||||
import "syscall"
|
||||
|
||||
//KeyEvent represents a keyevent
|
||||
type KeyEvent struct {
|
||||
Time syscall.Timeval
|
||||
Type uint16
|
||||
Code uint16
|
||||
Value int32
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
//generate:boxy
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
|
||||
"github.com/OrbTools/OrbMap/devices/orbweaver"
|
||||
"github.com/OrbTools/OrbMap/emu"
|
||||
"github.com/OrbTools/OrbMap/keyevents"
|
||||
)
|
||||
|
||||
func main() {
|
||||
orbs := flag.String("orbweaver", "", "Comma seperated string of orbs for the orbweaver")
|
||||
flag.Parse()
|
||||
KeyBus := make(chan *keyevents.KeyEvent, 128)
|
||||
Maps := orbweaver.ProcOrbFiles(*orbs)
|
||||
go orbweaver.OrbLoop(Maps, KeyBus)
|
||||
emu.ProcKey(KeyBus)
|
||||
}
|
||||
//generate:boxy
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
|
||||
"github.com/OrbTools/OrbMap/devices/orbweaver"
|
||||
"github.com/OrbTools/OrbMap/emu"
|
||||
"github.com/OrbTools/OrbMap/keyevents"
|
||||
)
|
||||
|
||||
func main() {
|
||||
orbs := flag.String("orbweaver", "", "Comma seperated string of orbs for the orbweaver")
|
||||
flag.Parse()
|
||||
KeyBus := make(chan *keyevents.KeyEvent, 128)
|
||||
Maps := orbweaver.ProcOrbFiles(*orbs)
|
||||
go orbweaver.OrbLoop(Maps, KeyBus)
|
||||
emu.ProcKey(KeyBus)
|
||||
}
|
||||
|
Loading…
Reference in New Issue