mirror of https://github.com/OrbTools/OrbMap
Adding windows experimental support, and cleaning
parent
754fa1f8d5
commit
ede221663f
@ -0,0 +1,37 @@
|
||||
package keypad
|
||||
|
||||
import (
|
||||
"unsafe"
|
||||
|
||||
"github.com/lxn/win"
|
||||
"github.com/minizbot2012/orbmap/interface/keyevents"
|
||||
)
|
||||
|
||||
type keyboardInput struct {
|
||||
wVk uint16
|
||||
wScan uint16
|
||||
dwFlags uint32
|
||||
time uint32
|
||||
dwExtraInfo uint64
|
||||
}
|
||||
|
||||
type input struct {
|
||||
inputType uint32
|
||||
ki keyboardInput
|
||||
padding uint64
|
||||
}
|
||||
|
||||
//Windows support is so weird
|
||||
func ProcKey(kb chan *keyevents.KeyEvent) {
|
||||
for {
|
||||
KeyEv := <-kb
|
||||
var i win.KEYBD_INPUT
|
||||
i.Type = 1
|
||||
i.Ki.WScan = uint16(KeyEv.Code)
|
||||
i.Ki.DwFlags = 0x8
|
||||
if KeyEv.Type == 2 {
|
||||
i.Ki.DwFlags |= 0x2
|
||||
}
|
||||
win.SendInput(1, unsafe.Pointer(&i), int32(unsafe.Sizeof(i)))
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package orbweaver
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
||||
"github.com/minizbot2012/orbmap/interface/keyevents"
|
||||
"github.com/minizbot2012/winorb/sys/keyboard"
|
||||
"github.com/minizbot2012/winorb/sys/types"
|
||||
)
|
||||
|
||||
//OrbLoop Main loop for this device
|
||||
func OrbLoop(km *KeyMaps, KeyBus chan *keyevents.KeyEvent) {
|
||||
for i := 0; i < 26; i++ {
|
||||
ecm[uint16(eventcodes[i])] = i
|
||||
}
|
||||
keyboardChan := make(chan types.KeyboardEvent, 16)
|
||||
if err := keyboard.Install(nil, keyboardChan); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
defer keyboard.Uninstall()
|
||||
|
||||
signalChan := make(chan os.Signal, 1)
|
||||
signal.Notify(signalChan, os.Interrupt)
|
||||
|
||||
fmt.Println("start capturing keyboard input")
|
||||
|
||||
for {
|
||||
k := <-keyboardChan
|
||||
fmt.Printf("Received %V %v\n", k.Message, k.ScanCode)
|
||||
KeyEv := &keyevents.KeyEvent{}
|
||||
if k.Flags == 0x2 {
|
||||
KeyEv.Type = 2
|
||||
} else {
|
||||
KeyEv.Type = 1
|
||||
}
|
||||
KeyEv.Code = uint16(k.ScanCode)
|
||||
KeyEv.Code = km.Maps[km.Currentmap].Keymap[ecm[KeyEv.Code]]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue