update keyboard code and add key delay

This commit is contained in:
vcaesar 2017-12-24 01:56:02 +08:00
parent b55f438c1b
commit 214ac59298
2 changed files with 43 additions and 39 deletions

View File

@ -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";

View File

@ -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)
}