mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-02 23:23:55 +00:00
Update KeyToggle & KeyTap
This commit is contained in:
parent
b3502d6b7a
commit
67e8918365
59
key/goKey.h
59
key/goKey.h
@ -163,18 +163,32 @@ int CheckKeyFlags(char* f, MMKeyFlags* flags)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// //If it's not an array, it should be a single string value.
|
int GetFlagsFromValue(char* value[], MMKeyFlags* flags){
|
||||||
|
if (!flags) {return -1;}
|
||||||
|
|
||||||
char* aKeyTap(char *k,char *akey){
|
for (int i = 0; i <2; i++){
|
||||||
|
MMKeyFlags f = MOD_NONE;
|
||||||
|
const int rv = CheckKeyFlags(value[i], &f);
|
||||||
|
if (rv) return rv;
|
||||||
|
|
||||||
|
*flags = (MMKeyFlags)(*flags | f);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
// return CheckKeyFlags(fstr, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If it's not an array, it should be a single string value.
|
||||||
|
|
||||||
|
char* aKeyTap(char *k,char *akey,char *akeyt){
|
||||||
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
||||||
// MMKeyFlags flags = 0;
|
// MMKeyFlags flags = 0;
|
||||||
MMKeyCode key;
|
MMKeyCode key;
|
||||||
|
|
||||||
// char *k;
|
// char *k;
|
||||||
// k = *kstr;
|
// k = *kstr;
|
||||||
|
|
||||||
if (strcmp(akey, "null") != 0){
|
if (strcmp(akey, "null") != 0){
|
||||||
switch (CheckKeyFlags(akey,&flags)){
|
if (strcmp(akeyt, "null") == 0){
|
||||||
|
switch (CheckKeyFlags(akey,&flags)){
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key flag.";
|
return "Null pointer in key flag.";
|
||||||
break;
|
break;
|
||||||
@ -182,6 +196,17 @@ char* aKeyTap(char *k,char *akey){
|
|||||||
return "Invalid key flag specified.";
|
return "Invalid key flag specified.";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
char* akeyarr[2] = {akey,akeyt};
|
||||||
|
switch(GetFlagsFromValue(akeyarr,&flags)){
|
||||||
|
case -1:
|
||||||
|
return "Null pointer in key flag.";
|
||||||
|
break;
|
||||||
|
case -2:
|
||||||
|
return "Invalid key flag specified.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(CheckKeyCodes(k, &key)){
|
switch(CheckKeyCodes(k, &key)){
|
||||||
@ -199,7 +224,7 @@ char* aKeyTap(char *k,char *akey){
|
|||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
char* aKeyToggle(char *k,char *d){
|
char* aKeyToggle(char *k,char *d,char *akey,char *akeyt){
|
||||||
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
MMKeyFlags flags = (MMKeyFlags) MOD_NONE;
|
||||||
MMKeyCode key;
|
MMKeyCode key;
|
||||||
|
|
||||||
@ -219,6 +244,30 @@ char* aKeyToggle(char *k,char *d){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp(akey, "null") != 0){
|
||||||
|
if (strcmp(akeyt, "null") == 0){
|
||||||
|
switch (CheckKeyFlags(akey,&flags)){
|
||||||
|
case -1:
|
||||||
|
return "Null pointer in key flag.";
|
||||||
|
break;
|
||||||
|
case -2:
|
||||||
|
return "Invalid key flag specified.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
char* akeyarr[2] = {akey,akeyt};
|
||||||
|
switch (GetFlagsFromValue(akeyarr, &flags))
|
||||||
|
{
|
||||||
|
case -1:
|
||||||
|
return "Null pointer in key flag.";
|
||||||
|
break;
|
||||||
|
case -2:
|
||||||
|
return "Invalid key flag specified.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch(CheckKeyCodes(k, &key)){
|
switch(CheckKeyCodes(k, &key)){
|
||||||
case -1:
|
case -1:
|
||||||
return "Null pointer in key code.";
|
return "Null pointer in key code.";
|
||||||
|
56
robotgo.go
56
robotgo.go
@ -278,9 +278,24 @@ func Try(fun func(), handler func(interface{})) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func KeyTap(args ...string) {
|
func KeyTap(args ...string) {
|
||||||
|
// func KeyTap(args ...interface{}) {
|
||||||
var akey string
|
var akey string
|
||||||
|
var akeyt string
|
||||||
|
// var ckeyarr []*C.char
|
||||||
|
// var keyarr []string
|
||||||
|
|
||||||
Try(func() {
|
Try(func() {
|
||||||
akey = args[1]
|
akey = args[1]
|
||||||
|
// for i, _ := range keyarr {
|
||||||
|
// ckeyarr = append(ckeyarr, (*C.char)(unsafe.Pointer(C.CString(keyarr[i]))))
|
||||||
|
// }
|
||||||
|
Try(func() {
|
||||||
|
akeyt = args[2]
|
||||||
|
}, func(e interface{}) {
|
||||||
|
// Println("err:::", e)
|
||||||
|
akeyt = "null"
|
||||||
|
})
|
||||||
|
|
||||||
}, func(e interface{}) {
|
}, func(e interface{}) {
|
||||||
// Println("err:::", e)
|
// Println("err:::", e)
|
||||||
akey = "null"
|
akey = "null"
|
||||||
@ -288,31 +303,50 @@ func KeyTap(args ...string) {
|
|||||||
|
|
||||||
zkey := C.CString(args[0])
|
zkey := C.CString(args[0])
|
||||||
amod := C.CString(akey)
|
amod := C.CString(akey)
|
||||||
// defer func() {
|
amodt := C.CString(akeyt)
|
||||||
C.aKeyTap(zkey, amod)
|
|
||||||
// }()
|
C.aKeyTap(zkey, amod, amodt)
|
||||||
|
|
||||||
defer C.free(unsafe.Pointer(zkey))
|
defer C.free(unsafe.Pointer(zkey))
|
||||||
defer C.free(unsafe.Pointer(amod))
|
defer C.free(unsafe.Pointer(amod))
|
||||||
|
defer C.free(unsafe.Pointer(amodt))
|
||||||
}
|
}
|
||||||
|
|
||||||
func KeyToggle(args ...string) {
|
func KeyToggle(args ...string) {
|
||||||
var akey string
|
var adown string
|
||||||
|
var amkey string
|
||||||
|
var amkeyt string
|
||||||
Try(func() {
|
Try(func() {
|
||||||
akey = args[1]
|
adown = args[1]
|
||||||
|
Try(func() {
|
||||||
|
amkey = args[2]
|
||||||
|
Try(func() {
|
||||||
|
amkeyt = args[3]
|
||||||
|
}, func(e interface{}) {
|
||||||
|
// Println("err:::", e)
|
||||||
|
amkeyt = "null"
|
||||||
|
})
|
||||||
|
}, func(e interface{}) {
|
||||||
|
// Println("err:::", e)
|
||||||
|
amkey = "null"
|
||||||
|
})
|
||||||
}, func(e interface{}) {
|
}, func(e interface{}) {
|
||||||
// Println("err:::", e)
|
// Println("err:::", e)
|
||||||
akey = "null"
|
adown = "null"
|
||||||
})
|
})
|
||||||
|
|
||||||
zkey := C.CString(args[0])
|
ckey := C.CString(args[0])
|
||||||
amod := C.CString(akey)
|
cadown := C.CString(adown)
|
||||||
|
camkey := C.CString(amkey)
|
||||||
|
camkeyt := C.CString(amkeyt)
|
||||||
// defer func() {
|
// defer func() {
|
||||||
str := C.aKeyToggle(zkey, amod)
|
str := C.aKeyToggle(ckey, cadown, camkey, camkeyt)
|
||||||
Println(str)
|
Println(str)
|
||||||
// }()
|
// }()
|
||||||
defer C.free(unsafe.Pointer(zkey))
|
defer C.free(unsafe.Pointer(ckey))
|
||||||
defer C.free(unsafe.Pointer(amod))
|
defer C.free(unsafe.Pointer(cadown))
|
||||||
|
defer C.free(unsafe.Pointer(camkey))
|
||||||
|
defer C.free(unsafe.Pointer(camkeyt))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TypeString(x string) {
|
func TypeString(x string) {
|
||||||
|
Loading…
Reference in New Issue
Block a user