Skip to content

Commit a183783

Browse files
committed
Update: simply key code
1 parent c1115ce commit a183783

File tree

1 file changed

+39
-36
lines changed

1 file changed

+39
-36
lines changed

key.go

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ func keyTaps(k string, keyArr []string, pid int) error {
416416
return nil
417417
}
418418

419-
func keyToggles(k string, keyArr []string, pid int) error {
419+
func getKeyDown(keyArr []string) (bool, []string) {
420420
if len(keyArr) <= 0 {
421421
keyArr = append(keyArr, "down")
422422
}
@@ -429,8 +429,11 @@ func keyToggles(k string, keyArr []string, pid int) error {
429429
if keyArr[0] == "up" || keyArr[0] == "down" {
430430
keyArr = keyArr[1:]
431431
}
432-
flags := getFlagsFromValue(keyArr)
432+
return down, keyArr
433+
}
433434

435+
func keyTogglesB(k string, down bool, keyArr []string, pid int) error {
436+
flags := getFlagsFromValue(keyArr)
434437
key, err := checkKeyCodes(k)
435438
if err != nil {
436439
return err
@@ -441,6 +444,11 @@ func keyToggles(k string, keyArr []string, pid int) error {
441444
return nil
442445
}
443446

447+
func keyToggles(k string, keyArr []string, pid int) error {
448+
down, keyArr1 := getKeyDown(keyArr)
449+
return keyTogglesB(k, down, keyArr1, pid)
450+
}
451+
444452
/*
445453
__ ___ ___________ ____ .______ ______ ___ .______ _______
446454
| |/ / | ____\ \ / / | _ \ / __ \ / \ | _ \ | \
@@ -478,6 +486,22 @@ func toErr(str *C.char) error {
478486
return errors.New(gstr)
479487
}
480488

489+
func appendShift(key string, len1 int, args ...interface{}) []interface{} {
490+
if len(key) > 0 && unicode.IsUpper([]rune(key)[0]) {
491+
args = append(args, "shift")
492+
}
493+
494+
key = strings.ToLower(key)
495+
if _, ok := Special[key]; ok {
496+
key = Special[key]
497+
if len(args) <= len1 {
498+
args = append(args, "shift")
499+
}
500+
}
501+
502+
return args
503+
}
504+
481505
// KeyTap taps the keyboard code;
482506
//
483507
// See keys supported:
@@ -496,18 +520,7 @@ func toErr(str *C.char) error {
496520
// robotgo.KeyTap("k", pid int)
497521
func KeyTap(key string, args ...interface{}) error {
498522
var keyArr []string
499-
500-
if len(key) > 0 && unicode.IsUpper([]rune(key)[0]) {
501-
args = append(args, "shift")
502-
}
503-
504-
key = strings.ToLower(key)
505-
if _, ok := Special[key]; ok {
506-
key = Special[key]
507-
if len(args) <= 0 {
508-
args = append(args, "shift")
509-
}
510-
}
523+
args = appendShift(key, 0, args...)
511524

512525
pid := 0
513526
if len(args) > 0 {
@@ -526,6 +539,16 @@ func KeyTap(key string, args ...interface{}) error {
526539
return keyTaps(key, keyArr, pid)
527540
}
528541

542+
func getToggleArgs(args ...interface{}) (pid int, keyArr []string) {
543+
if len(args) > 0 && reflect.TypeOf(args[0]) == reflect.TypeOf(pid) {
544+
pid = args[0].(int)
545+
keyArr = ToStrings(args[1:])
546+
} else {
547+
keyArr = ToStrings(args)
548+
}
549+
return
550+
}
551+
529552
// KeyToggle toggles the keyboard, if there not have args default is "down"
530553
//
531554
// See keys:
@@ -540,28 +563,8 @@ func KeyTap(key string, args ...interface{}) error {
540563
// robotgo.KeyToggle("a", "up", "alt", "cmd")
541564
// robotgo.KeyToggle("k", pid int)
542565
func KeyToggle(key string, args ...interface{}) error {
543-
544-
if len(key) > 0 && unicode.IsUpper([]rune(key)[0]) {
545-
args = append(args, "shift")
546-
}
547-
548-
key = strings.ToLower(key)
549-
if _, ok := Special[key]; ok {
550-
key = Special[key]
551-
if len(args) <= 1 {
552-
args = append(args, "shift")
553-
}
554-
}
555-
556-
pid := 0
557-
var keyArr []string
558-
if len(args) > 0 && reflect.TypeOf(args[0]) == reflect.TypeOf(pid) {
559-
pid = args[0].(int)
560-
keyArr = ToStrings(args[1:])
561-
} else {
562-
keyArr = ToStrings(args)
563-
}
564-
566+
args = appendShift(key, 1, args...)
567+
pid, keyArr := getToggleArgs(args...)
565568
return keyToggles(key, keyArr, pid)
566569
}
567570

0 commit comments

Comments
 (0)