mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-05 00:03:55 +00:00
update keyboard code and add key delay
This commit is contained in:
parent
b55f438c1b
commit
214ac59298
26
key/goKey.h
26
key/goKey.h
@ -179,12 +179,12 @@ int GetFlagsFromValue(char* value[], MMKeyFlags* flags, int num){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If it's not an array, it should be a single string value.
|
// If it's not an array, it should be a single string value.
|
||||||
char* aKey_Tap(char *k, char* keyarr[], int num){
|
char* key_Tap(char *k, char* keyArr[], int num, int keyDelay){
|
||||||
MMKeyFlags flags = MOD_NONE;
|
MMKeyFlags flags = MOD_NONE;
|
||||||
// MMKeyFlags flags = 0;
|
// MMKeyFlags flags = 0;
|
||||||
MMKeyCode key;
|
MMKeyCode key;
|
||||||
|
|
||||||
switch(GetFlagsFromValue(keyarr, &flags, num)){
|
switch(GetFlagsFromValue(keyArr, &flags, num)){
|
||||||
// switch (CheckKeyFlags(akey, &flags)){
|
// switch (CheckKeyFlags(akey, &flags)){
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key flag.";
|
return "Null pointer in key flag.";
|
||||||
@ -203,13 +203,13 @@ char* aKey_Tap(char *k, char* keyarr[], int num){
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tapKeyCode(key, flags);
|
tapKeyCode(key, flags);
|
||||||
microsleep(keyboardDelay);
|
microsleep(keyDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
char* aKeyTap(char *k, char *akey, char *akeyt){
|
char* aKeyTap(char *k, char *akey, char *keyT, int keyDelay){
|
||||||
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
||||||
// MMKeyFlags flags = 0;
|
// MMKeyFlags flags = 0;
|
||||||
MMKeyCode key;
|
MMKeyCode key;
|
||||||
@ -217,7 +217,7 @@ char* aKeyTap(char *k, char *akey, char *akeyt){
|
|||||||
// char *k;
|
// char *k;
|
||||||
// k = *kstr;
|
// k = *kstr;
|
||||||
if (strcmp(akey, "null") != 0){
|
if (strcmp(akey, "null") != 0){
|
||||||
if (strcmp(akeyt, "null") == 0){
|
if (strcmp(keyT, "null") == 0){
|
||||||
switch (CheckKeyFlags(akey, &flags)){
|
switch (CheckKeyFlags(akey, &flags)){
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key flag.";
|
return "Null pointer in key flag.";
|
||||||
@ -227,8 +227,8 @@ char* aKeyTap(char *k, char *akey, char *akeyt){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
char* akeyarr[2] = {akey, akeyt};
|
char* akeyArr[2] = {akey, keyT};
|
||||||
switch(GetFlagsFromValue(akeyarr, &flags, 2)){
|
switch(GetFlagsFromValue(akeyArr, &flags, 2)){
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key flag.";
|
return "Null pointer in key flag.";
|
||||||
break;
|
break;
|
||||||
@ -248,13 +248,13 @@ char* aKeyTap(char *k, char *akey, char *akeyt){
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tapKeyCode(key, flags);
|
tapKeyCode(key, flags);
|
||||||
microsleep(keyboardDelay);
|
microsleep(keyDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
char* key_Toggle(char *k, char *d, char *akey, char *keyT, int keyDelay){
|
||||||
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
||||||
MMKeyCode key;
|
MMKeyCode key;
|
||||||
|
|
||||||
@ -275,7 +275,7 @@ char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(akey, "null") != 0){
|
if (strcmp(akey, "null") != 0){
|
||||||
if (strcmp(akeyt, "null") == 0){
|
if (strcmp(keyT, "null") == 0){
|
||||||
switch (CheckKeyFlags(akey, &flags)){
|
switch (CheckKeyFlags(akey, &flags)){
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key flag.";
|
return "Null pointer in key flag.";
|
||||||
@ -285,8 +285,8 @@ char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
char* akeyarr[2] = {akey, akeyt};
|
char* akeyArr[2] = {akey, keyT};
|
||||||
switch (GetFlagsFromValue(akeyarr, &flags, 2))
|
switch (GetFlagsFromValue(akeyArr, &flags, 2))
|
||||||
{
|
{
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key flag.";
|
return "Null pointer in key flag.";
|
||||||
@ -307,7 +307,7 @@ char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
toggleKeyCode(key, down, flags);
|
toggleKeyCode(key, down, flags);
|
||||||
microsleep(keyboardDelay);
|
microsleep(keyDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "0";
|
return "0";
|
||||||
|
56
robotgo.go
56
robotgo.go
@ -62,7 +62,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
version string = "v0.47.0.447, Mount Cook!"
|
version string = "v0.47.0.448, Mount Cook!"
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
@ -489,53 +489,56 @@ func ScrollMouse(x int, y string) {
|
|||||||
func KeyTap(args ...interface{}) {
|
func KeyTap(args ...interface{}) {
|
||||||
var (
|
var (
|
||||||
akey string
|
akey string
|
||||||
akeyt string
|
keyT = "null"
|
||||||
keyarr []string
|
keyArr []string
|
||||||
num int
|
num int
|
||||||
|
keyDelay = 10
|
||||||
)
|
)
|
||||||
// var ckeyArr []*C.char
|
// var ckeyArr []*C.char
|
||||||
ckeyArr := make([](*_Ctype_char), 0)
|
ckeyArr := make([](*_Ctype_char), 0)
|
||||||
|
|
||||||
Try(func() {
|
Try(func() {
|
||||||
if reflect.TypeOf(args[1]) == reflect.TypeOf(keyarr) {
|
if reflect.TypeOf(args[1]) == reflect.TypeOf(keyArr) {
|
||||||
|
|
||||||
keyarr = args[1].([]string)
|
keyArr = args[1].([]string)
|
||||||
|
|
||||||
num = len(keyarr)
|
num = len(keyArr)
|
||||||
|
|
||||||
for i := 0; i < num; i++ {
|
for i := 0; i < num; i++ {
|
||||||
ckeyArr = append(ckeyArr, (*C.char)(unsafe.Pointer(C.CString(keyarr[i]))))
|
ckeyArr = append(ckeyArr, (*C.char)(unsafe.Pointer(C.CString(keyArr[i]))))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(args) > 3 {
|
||||||
|
keyDelay = args[2].(int)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
akey = args[1].(string)
|
akey = args[1].(string)
|
||||||
|
|
||||||
Try(func() {
|
if reflect.TypeOf(args[2]) == reflect.TypeOf(akey) {
|
||||||
akeyt = args[2].(string)
|
keyT = args[2].(string)
|
||||||
|
} else {
|
||||||
}, func(e interface{}) {
|
keyDelay = args[2].(int)
|
||||||
// fmt.Println("err:::", e)
|
}
|
||||||
akeyt = "null"
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}, func(e interface{}) {
|
}, func(e interface{}) {
|
||||||
// fmt.Println("err:::", e)
|
// fmt.Println("err:::", e)
|
||||||
akey = "null"
|
akey = "null"
|
||||||
keyarr = []string{"null"}
|
keyArr = []string{"null"}
|
||||||
})
|
})
|
||||||
// }()
|
// }()
|
||||||
|
|
||||||
zkey := C.CString(args[0].(string))
|
zkey := C.CString(args[0].(string))
|
||||||
|
|
||||||
if akey == "" && len(keyarr) != 0 {
|
if akey == "" && len(keyArr) != 0 {
|
||||||
C.aKey_Tap(zkey, (**_Ctype_char)(unsafe.Pointer(&ckeyArr[0])), C.int(num))
|
C.key_Tap(zkey, (**_Ctype_char)(unsafe.Pointer(&ckeyArr[0])),
|
||||||
|
C.int(num),C.int(keyDelay))
|
||||||
} else {
|
} else {
|
||||||
// zkey := C.CString(args[0])
|
// zkey := C.CString(args[0])
|
||||||
amod := C.CString(akey)
|
amod := C.CString(akey)
|
||||||
amodt := C.CString(akeyt)
|
amodt := C.CString(keyT)
|
||||||
|
|
||||||
C.aKeyTap(zkey, amod, amodt)
|
C.aKeyTap(zkey, amod, amodt, C.int(keyDelay))
|
||||||
|
|
||||||
defer C.free(unsafe.Pointer(amod))
|
defer C.free(unsafe.Pointer(amod))
|
||||||
defer C.free(unsafe.Pointer(amodt))
|
defer C.free(unsafe.Pointer(amodt))
|
||||||
@ -552,7 +555,8 @@ func KeyToggle(args ...string) string {
|
|||||||
var (
|
var (
|
||||||
adown string
|
adown string
|
||||||
amkey string
|
amkey string
|
||||||
amkeyt string
|
mKeyT string
|
||||||
|
keyDelay = 10
|
||||||
)
|
)
|
||||||
|
|
||||||
Try(func() {
|
Try(func() {
|
||||||
@ -561,10 +565,10 @@ func KeyToggle(args ...string) string {
|
|||||||
amkey = args[2]
|
amkey = args[2]
|
||||||
|
|
||||||
Try(func() {
|
Try(func() {
|
||||||
amkeyt = args[3]
|
mKeyT = args[3]
|
||||||
}, func(e interface{}) {
|
}, func(e interface{}) {
|
||||||
// fmt.Println("err:::", e)
|
// fmt.Println("err:::", e)
|
||||||
amkeyt = "null"
|
mKeyT = "null"
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
amkey = "null"
|
amkey = "null"
|
||||||
@ -577,16 +581,16 @@ func KeyToggle(args ...string) string {
|
|||||||
ckey := C.CString(args[0])
|
ckey := C.CString(args[0])
|
||||||
cadown := C.CString(adown)
|
cadown := C.CString(adown)
|
||||||
camkey := C.CString(amkey)
|
camkey := C.CString(amkey)
|
||||||
camkeyt := C.CString(amkeyt)
|
cmKeyT := C.CString(mKeyT)
|
||||||
// defer func() {
|
// defer func() {
|
||||||
str := C.aKeyToggle(ckey, cadown, camkey, camkeyt)
|
str := C.key_Toggle(ckey, cadown, camkey, cmKeyT, C.int(keyDelay))
|
||||||
// fmt.Println(str)
|
// fmt.Println(str)
|
||||||
// C.aKeyToggle(ckey, cadown, camkey, camkeyt)
|
// C.aKeyToggle(ckey, cadown, camkey, cmKeyT)
|
||||||
// }()
|
// }()
|
||||||
defer C.free(unsafe.Pointer(ckey))
|
defer C.free(unsafe.Pointer(ckey))
|
||||||
defer C.free(unsafe.Pointer(cadown))
|
defer C.free(unsafe.Pointer(cadown))
|
||||||
defer C.free(unsafe.Pointer(camkey))
|
defer C.free(unsafe.Pointer(camkey))
|
||||||
defer C.free(unsafe.Pointer(camkeyt))
|
defer C.free(unsafe.Pointer(cmKeyT))
|
||||||
|
|
||||||
return C.GoString(str)
|
return C.GoString(str)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user