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

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

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

@ -5,7 +5,7 @@ package emu
import ( import (
"unsafe" "unsafe"
evdev "github.com/gvalkov/golang-evdev" "github.com/OrbTools/OrbMap/keyevents"
"github.com/lxn/win" "github.com/lxn/win"
) )
@ -39,7 +39,7 @@ func upKey(key uint16) {
} }
//ProcKey Windows support is so weird //ProcKey Windows support is so weird
func ProcKey(kb chan *evdev.InputEvent) { func ProcKey(kb chan *keyevents.KeyEvent) {
println("Emu Windows Starting") println("Emu Windows Starting")
for { for {
KeyEv := <-kb 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/devices/orbweaver"
"github.com/OrbTools/OrbMap/emu" "github.com/OrbTools/OrbMap/emu"
evdev "github.com/gvalkov/golang-evdev" "github.com/OrbTools/OrbMap/keyevents"
) )
func main() { func main() {
orbs := flag.String("orbweaver", "", "Comma seperated string of orbs for the orbweaver") orbs := flag.String("orbweaver", "", "Comma seperated string of orbs for the orbweaver")
flag.Parse() flag.Parse()
KeyBus := make(chan *evdev.InputEvent, 128) KeyBus := make(chan *keyevents.KeyEvent, 128)
Maps := orbweaver.ProcOrbFiles(*orbs) Maps := orbweaver.ProcOrbFiles(*orbs)
go orbweaver.OrbLoop(Maps, KeyBus) go orbweaver.OrbLoop(Maps, KeyBus)
emu.ProcKey(KeyBus) emu.ProcKey(KeyBus)

Loading…
Cancel
Save