From 5da5d4363eef453b6ddb851d895387b12a427262 Mon Sep 17 00:00:00 2001 From: vCaesar Date: Sat, 8 Oct 2016 15:11:16 +0800 Subject: [PATCH] Update keybox --- README.md | 2 +- key/goKey.h | 19 +++++++++++++++---- robotgo.go | 48 ++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index f5ad7fb..9a5387a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ This is a work in progress. ###Requirements: -####ALL +####ALL: Golang ####For Mac OS X: diff --git a/key/goKey.h b/key/goKey.h index 9b45ce2..b01250e 100644 --- a/key/goKey.h +++ b/key/goKey.h @@ -163,7 +163,7 @@ int CheckKeyFlags(char* f, MMKeyFlags* flags) // return GetFlagsFromString(value, flags); // } -int akeyTap(char *k){ +char* akeyTap(char *k,char *aval){ MMKeyFlags flags = (MMKeyFlags) MOD_NONE; // MMKeyFlags flags = 0; MMKeyCode key; @@ -171,19 +171,30 @@ int akeyTap(char *k){ // char *k; // k = *kstr; + if (strcmp(aval, "null") != 0){ + switch (CheckKeyFlags(aval,&flags)){ + case -1: + return "Null pointer in key flag."; + break; + case -2: + return "Invalid key flag specified."; + break; + } + } + switch(CheckKeyCodes(k, &key)){ case -1: - return 1; + return "Null pointer in key code."; break; case -2: - return 1; + return "Invalid key code specified."; break; default: tapKeyCode(key, flags); microsleep(keyboardDelay); } - return 0; + return "0"; } char* akeyToggle(char *k,char *d){ diff --git a/robotgo.go b/robotgo.go index 8ba5bfb..45e9b8e 100644 --- a/robotgo.go +++ b/robotgo.go @@ -80,18 +80,46 @@ func ScrollMouse(x C.int, y string) { |_|\_\___|\__, |_.__/ \___/ \__,_|_| \__,_| |___/ */ - -func KeyTap(x string) { - z := C.CString(x) - // Println("----") - C.akeyTap(z) +func Try(fun func(), handler func(interface{})) { + defer func() { + if err := recover(); err != nil { + handler(err) + } + }() + fun() } -func KeyToggle(x string, y string) { - cx := C.CString(x) - cy := C.CString(y) - str := C.akeyToggle(cx, cy) - Println(str) +func KeyTap(args ...string) { + var apara string + Try(func() { + apara = args[1] + }, func(e interface{}) { + // Println("err:::", e) + apara = "null" + }) + + zkey := C.CString(args[0]) + amod := C.CString(apara) + defer func() { + C.akeyTap(zkey, amod) + }() +} + +func KeyToggle(args ...string) { + var apara string + Try(func() { + apara = args[1] + }, func(e interface{}) { + // Println("err:::", e) + apara = "null" + }) + + zkey := C.CString(args[0]) + amod := C.CString(apara) + defer func() { + str := C.akeyToggle(zkey, amod) + Println(str) + }() } func TypeString(x string) {