mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-01 06:33:56 +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.
|
||||
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 = 0;
|
||||
MMKeyCode key;
|
||||
|
||||
switch(GetFlagsFromValue(keyarr, &flags, num)){
|
||||
switch(GetFlagsFromValue(keyArr, &flags, num)){
|
||||
// switch (CheckKeyFlags(akey, &flags)){
|
||||
case -1:
|
||||
return "Null pointer in key flag.";
|
||||
@ -203,13 +203,13 @@ char* aKey_Tap(char *k, char* keyarr[], int num){
|
||||
break;
|
||||
default:
|
||||
tapKeyCode(key, flags);
|
||||
microsleep(keyboardDelay);
|
||||
microsleep(keyDelay);
|
||||
}
|
||||
|
||||
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 = 0;
|
||||
MMKeyCode key;
|
||||
@ -217,7 +217,7 @@ char* aKeyTap(char *k, char *akey, char *akeyt){
|
||||
// char *k;
|
||||
// k = *kstr;
|
||||
if (strcmp(akey, "null") != 0){
|
||||
if (strcmp(akeyt, "null") == 0){
|
||||
if (strcmp(keyT, "null") == 0){
|
||||
switch (CheckKeyFlags(akey, &flags)){
|
||||
case -1:
|
||||
return "Null pointer in key flag.";
|
||||
@ -227,8 +227,8 @@ char* aKeyTap(char *k, char *akey, char *akeyt){
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
char* akeyarr[2] = {akey, akeyt};
|
||||
switch(GetFlagsFromValue(akeyarr, &flags, 2)){
|
||||
char* akeyArr[2] = {akey, keyT};
|
||||
switch(GetFlagsFromValue(akeyArr, &flags, 2)){
|
||||
case -1:
|
||||
return "Null pointer in key flag.";
|
||||
break;
|
||||
@ -248,13 +248,13 @@ char* aKeyTap(char *k, char *akey, char *akeyt){
|
||||
break;
|
||||
default:
|
||||
tapKeyCode(key, flags);
|
||||
microsleep(keyboardDelay);
|
||||
microsleep(keyDelay);
|
||||
}
|
||||
|
||||
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;
|
||||
MMKeyCode key;
|
||||
|
||||
@ -275,7 +275,7 @@ char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
||||
}
|
||||
|
||||
if (strcmp(akey, "null") != 0){
|
||||
if (strcmp(akeyt, "null") == 0){
|
||||
if (strcmp(keyT, "null") == 0){
|
||||
switch (CheckKeyFlags(akey, &flags)){
|
||||
case -1:
|
||||
return "Null pointer in key flag.";
|
||||
@ -285,8 +285,8 @@ char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
char* akeyarr[2] = {akey, akeyt};
|
||||
switch (GetFlagsFromValue(akeyarr, &flags, 2))
|
||||
char* akeyArr[2] = {akey, keyT};
|
||||
switch (GetFlagsFromValue(akeyArr, &flags, 2))
|
||||
{
|
||||
case -1:
|
||||
return "Null pointer in key flag.";
|
||||
@ -307,7 +307,7 @@ char* aKeyToggle(char *k, char *d, char *akey, char *akeyt){
|
||||
break;
|
||||
default:
|
||||
toggleKeyCode(key, down, flags);
|
||||
microsleep(keyboardDelay);
|
||||
microsleep(keyDelay);
|
||||
}
|
||||
|
||||
return "0";
|
||||
|
56
robotgo.go
56
robotgo.go
@ -62,7 +62,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
version string = "v0.47.0.447, Mount Cook!"
|
||||
version string = "v0.47.0.448, Mount Cook!"
|
||||
)
|
||||
|
||||
type (
|
||||
@ -489,53 +489,56 @@ func ScrollMouse(x int, y string) {
|
||||
func KeyTap(args ...interface{}) {
|
||||
var (
|
||||
akey string
|
||||
akeyt string
|
||||
keyarr []string
|
||||
keyT = "null"
|
||||
keyArr []string
|
||||
num int
|
||||
keyDelay = 10
|
||||
)
|
||||
// var ckeyArr []*C.char
|
||||
ckeyArr := make([](*_Ctype_char), 0)
|
||||
|
||||
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++ {
|
||||
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 {
|
||||
akey = args[1].(string)
|
||||
|
||||
Try(func() {
|
||||
akeyt = args[2].(string)
|
||||
|
||||
}, func(e interface{}) {
|
||||
// fmt.Println("err:::", e)
|
||||
akeyt = "null"
|
||||
})
|
||||
if reflect.TypeOf(args[2]) == reflect.TypeOf(akey) {
|
||||
keyT = args[2].(string)
|
||||
} else {
|
||||
keyDelay = args[2].(int)
|
||||
}
|
||||
}
|
||||
|
||||
}, func(e interface{}) {
|
||||
// fmt.Println("err:::", e)
|
||||
akey = "null"
|
||||
keyarr = []string{"null"}
|
||||
keyArr = []string{"null"}
|
||||
})
|
||||
// }()
|
||||
|
||||
zkey := C.CString(args[0].(string))
|
||||
|
||||
if akey == "" && len(keyarr) != 0 {
|
||||
C.aKey_Tap(zkey, (**_Ctype_char)(unsafe.Pointer(&ckeyArr[0])), C.int(num))
|
||||
if akey == "" && len(keyArr) != 0 {
|
||||
C.key_Tap(zkey, (**_Ctype_char)(unsafe.Pointer(&ckeyArr[0])),
|
||||
C.int(num),C.int(keyDelay))
|
||||
} else {
|
||||
// zkey := C.CString(args[0])
|
||||
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(amodt))
|
||||
@ -552,7 +555,8 @@ func KeyToggle(args ...string) string {
|
||||
var (
|
||||
adown string
|
||||
amkey string
|
||||
amkeyt string
|
||||
mKeyT string
|
||||
keyDelay = 10
|
||||
)
|
||||
|
||||
Try(func() {
|
||||
@ -561,10 +565,10 @@ func KeyToggle(args ...string) string {
|
||||
amkey = args[2]
|
||||
|
||||
Try(func() {
|
||||
amkeyt = args[3]
|
||||
mKeyT = args[3]
|
||||
}, func(e interface{}) {
|
||||
// fmt.Println("err:::", e)
|
||||
amkeyt = "null"
|
||||
mKeyT = "null"
|
||||
})
|
||||
} else {
|
||||
amkey = "null"
|
||||
@ -577,16 +581,16 @@ func KeyToggle(args ...string) string {
|
||||
ckey := C.CString(args[0])
|
||||
cadown := C.CString(adown)
|
||||
camkey := C.CString(amkey)
|
||||
camkeyt := C.CString(amkeyt)
|
||||
cmKeyT := C.CString(mKeyT)
|
||||
// defer func() {
|
||||
str := C.aKeyToggle(ckey, cadown, camkey, camkeyt)
|
||||
str := C.key_Toggle(ckey, cadown, camkey, cmKeyT, C.int(keyDelay))
|
||||
// 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(cadown))
|
||||
defer C.free(unsafe.Pointer(camkey))
|
||||
defer C.free(unsafe.Pointer(camkeyt))
|
||||
defer C.free(unsafe.Pointer(cmKeyT))
|
||||
|
||||
return C.GoString(str)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user