Windows support is back and linux works again :)

main
Minizbot2012 3 years ago
parent 8a505e7705
commit 9b58dfe294
No known key found for this signature in database
GPG Key ID: 977C8ADE12361917

@ -5,13 +5,15 @@ package orbweaver
import (
"bytes"
"encoding/binary"
"unsafe"
morb "github.com/OrbTools/OrbCommon/devices/orbweaver"
"github.com/OrbTools/OrbMap/keyevents"
evdev "github.com/gvalkov/golang-evdev"
)
//OrbLoop Main loop for this device
func OrbLoop(km *morb.KeyMaps, KeyBus chan *evdev.InputEvent) {
func OrbLoop(km *morb.KeyMaps, KeyBus chan *keyevents.KeyEvent) {
eventcodes = morb.BINDING[:]
for i := 0; i < len(eventcodes); i++ {
ecm[uint16(eventcodes[i])] = i
@ -22,10 +24,12 @@ func OrbLoop(km *morb.KeyMaps, KeyBus chan *evdev.InputEvent) {
panic(err)
}
f.Grab()
b := make([]byte, 24)
var evsize = int(unsafe.Sizeof(keyevents.KeyEvent{}))
b := make([]byte, evsize)
for {
KeyEv, _ := f.ReadOne()
binary.Read(bytes.NewReader(b[16:]), binary.LittleEndian, &KeyEv)
f.File.Read(b)
KeyEv := &keyevents.KeyEvent{}
binary.Read(bytes.NewBuffer(b), binary.LittleEndian, KeyEv)
KeyEv.Code = km.Maps[km.Currentmap].Keymap[ecm[KeyEv.Code]]
if KeyEv.Code != 0 && KeyEv.Type != 4 {
KeyBus <- KeyEv

@ -9,8 +9,8 @@ import (
morb "github.com/OrbTools/OrbCommon/devices/orbweaver"
"github.com/OrbTools/OrbCommon/hid"
"github.com/OrbTools/OrbMap/keyevents"
"github.com/google/gousb"
evdev "github.com/gvalkov/golang-evdev"
)
const (
@ -101,7 +101,7 @@ func (s *swapInt) Differ(s2 *swapInt) []byte {
}
//OrbLoop Main loop for this device
func OrbLoop(km *morb.KeyMaps, KeyBus chan *evdev.InputEvent) {
func OrbLoop(km *morb.KeyMaps, KeyBus chan *keyevents.KeyEvent) {
eventcodes = morb.BINDING[:]
for i := 0; i < len(eventcodes); i++ {
ecm[uint16(eventcodes[i])] = i
@ -163,7 +163,7 @@ func OrbLoop(km *morb.KeyMaps, KeyBus chan *evdev.InputEvent) {
}
for _, pre := range swaper.S1.Differ(swaper.S2) {
if pre != 0 {
KeyEv := &evdev.InputEvent{}
KeyEv := &keyevents.KeyEvent{}
KeyEv.Code = uint16(pre)
KeyEv.Type = 1
KeyBus <- KeyEv
@ -171,7 +171,7 @@ func OrbLoop(km *morb.KeyMaps, KeyBus chan *evdev.InputEvent) {
}
for _, rel := range swaper.S2.Differ(swaper.S1) {
if rel != 0 {
KeyEv := &evdev.InputEvent{}
KeyEv := &keyevents.KeyEvent{}
KeyEv.Code = uint16(rel)
KeyEv.Type = 2
KeyBus <- KeyEv

@ -3,14 +3,14 @@
package emu
import (
"github.com/OrbTools/OrbMap/keyevents"
"github.com/bendahl/uinput"
evdev "github.com/gvalkov/golang-evdev"
)
var vkm uinput.Keyboard = nil
//ProcKey keyboard emulator loop
func ProcKey(kb chan *evdev.InputEvent) {
func ProcKey(kb chan *keyevents.KeyEvent) {
println("Emu Unix Starting")
var err error
vkm, err = uinput.CreateKeyboard("/dev/uinput", []byte("Orbmap"))
@ -20,7 +20,7 @@ func ProcKey(kb chan *evdev.InputEvent) {
defer vkm.Close()
for {
KeyEv := <-kb
if KeyEv.Code == 1 {
if KeyEv.Type == 1 {
if KeyEv.Value == 1 {
vkm.KeyDown(int(KeyEv.Code))
} else if KeyEv.Value == 2 {

@ -5,7 +5,7 @@ package emu
import (
"unsafe"
evdev "github.com/gvalkov/golang-evdev"
"github.com/OrbTools/OrbMap/keyevents"
"github.com/lxn/win"
)
@ -39,7 +39,7 @@ func upKey(key uint16) {
}
//ProcKey Windows support is so weird
func ProcKey(kb chan *evdev.InputEvent) {
func ProcKey(kb chan *keyevents.KeyEvent) {
println("Emu Windows Starting")
for {
KeyEv := <-kb

@ -0,0 +1,11 @@
package keyevents
import "syscall"
//KeyEvent represents a keyevent
type KeyEvent struct {
Time syscall.Timeval
Type uint16
Code uint16
Value int32
}

@ -6,13 +6,13 @@ import (
"github.com/OrbTools/OrbMap/devices/orbweaver"
"github.com/OrbTools/OrbMap/emu"
evdev "github.com/gvalkov/golang-evdev"
"github.com/OrbTools/OrbMap/keyevents"
)
func main() {
orbs := flag.String("orbweaver", "", "Comma seperated string of orbs for the orbweaver")
flag.Parse()
KeyBus := make(chan *evdev.InputEvent, 128)
KeyBus := make(chan *keyevents.KeyEvent, 128)
Maps := orbweaver.ProcOrbFiles(*orbs)
go orbweaver.OrbLoop(Maps, KeyBus)
emu.ProcKey(KeyBus)

Loading…
Cancel
Save