mirror of https://github.com/OrbTools/OrbMap
Work on windows... still WIP
parent
efdd225b03
commit
134538171a
@ -1,23 +1,58 @@
|
||||
package keypad
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"github.com/lxn/win"
|
||||
"github.com/minizbot2012/orbmap/interface/keyevents"
|
||||
)
|
||||
|
||||
var user32 = syscall.NewLazyDLL("user32.dll")
|
||||
var procKeyBd = user32.NewProc("keybd_event")
|
||||
var mapVK = user32.NewProc("MapVirtualKeyA")
|
||||
|
||||
func downKey(key int) {
|
||||
flag := 0
|
||||
var in win.KEYBD_INPUT
|
||||
vs, _, _ := mapVK.Call(uintptr(uint32(key)), uintptr(1))
|
||||
vsc := uint16(vs)
|
||||
println(vsc)
|
||||
if vsc == win.VK_SHIFT || vsc == win.VK_CONTROL || vsc == win.VK_MENU {
|
||||
flag |= win.KEYEVENTF_EXTENDEDKEY
|
||||
}
|
||||
in.Type = 1
|
||||
in.Ki.DwExtraInfo = 0
|
||||
in.Ki.DwFlags = uint32(flag)
|
||||
in.Ki.WScan = 0
|
||||
in.Ki.WVk = vsc
|
||||
|
||||
win.SendInput(1, unsafe.Pointer(&in), int32(unsafe.Sizeof(in)))
|
||||
}
|
||||
func upKey(key int) {
|
||||
flag := win.KEYEVENTF_KEYUP
|
||||
var in win.KEYBD_INPUT
|
||||
vs, _, _ := mapVK.Call(uintptr(uint32(key)), uintptr(1))
|
||||
vsc := uint16(vs)
|
||||
if vsc == win.VK_SHIFT || vsc == win.VK_CONTROL || vsc == win.VK_MENU {
|
||||
flag |= win.KEYEVENTF_EXTENDEDKEY
|
||||
}
|
||||
in.Type = 1
|
||||
in.Ki.DwExtraInfo = 0
|
||||
in.Ki.DwFlags = uint32(flag)
|
||||
in.Ki.WScan = 0
|
||||
in.Ki.WVk = vsc
|
||||
win.SendInput(1, unsafe.Pointer(&in), int32(unsafe.Sizeof(in)))
|
||||
}
|
||||
|
||||
//ProcKey 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
|
||||
if KeyEv.Type == 1 {
|
||||
downKey(int(KeyEv.Code))
|
||||
} else if KeyEv.Type == 2 {
|
||||
upKey(int(KeyEv.Code))
|
||||
}
|
||||
win.SendInput(1, unsafe.Pointer(&i), int32(unsafe.Sizeof(i)))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue