@@ -416,7 +416,7 @@ func keyTaps(k string, keyArr []string, pid int) error {
416
416
return nil
417
417
}
418
418
419
- func keyToggles ( k string , keyArr []string , pid int ) error {
419
+ func getKeyDown ( keyArr []string ) ( bool , [] string ) {
420
420
if len (keyArr ) <= 0 {
421
421
keyArr = append (keyArr , "down" )
422
422
}
@@ -429,8 +429,11 @@ func keyToggles(k string, keyArr []string, pid int) error {
429
429
if keyArr [0 ] == "up" || keyArr [0 ] == "down" {
430
430
keyArr = keyArr [1 :]
431
431
}
432
- flags := getFlagsFromValue (keyArr )
432
+ return down , keyArr
433
+ }
433
434
435
+ func keyTogglesB (k string , down bool , keyArr []string , pid int ) error {
436
+ flags := getFlagsFromValue (keyArr )
434
437
key , err := checkKeyCodes (k )
435
438
if err != nil {
436
439
return err
@@ -441,6 +444,11 @@ func keyToggles(k string, keyArr []string, pid int) error {
441
444
return nil
442
445
}
443
446
447
+ func keyToggles (k string , keyArr []string , pid int ) error {
448
+ down , keyArr1 := getKeyDown (keyArr )
449
+ return keyTogglesB (k , down , keyArr1 , pid )
450
+ }
451
+
444
452
/*
445
453
__ ___ ___________ ____ .______ ______ ___ .______ _______
446
454
| |/ / | ____\ \ / / | _ \ / __ \ / \ | _ \ | \
@@ -478,6 +486,22 @@ func toErr(str *C.char) error {
478
486
return errors .New (gstr )
479
487
}
480
488
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
+
481
505
// KeyTap taps the keyboard code;
482
506
//
483
507
// See keys supported:
@@ -496,18 +520,7 @@ func toErr(str *C.char) error {
496
520
// robotgo.KeyTap("k", pid int)
497
521
func KeyTap (key string , args ... interface {}) error {
498
522
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 ... )
511
524
512
525
pid := 0
513
526
if len (args ) > 0 {
@@ -526,6 +539,16 @@ func KeyTap(key string, args ...interface{}) error {
526
539
return keyTaps (key , keyArr , pid )
527
540
}
528
541
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
+
529
552
// KeyToggle toggles the keyboard, if there not have args default is "down"
530
553
//
531
554
// See keys:
@@ -540,28 +563,8 @@ func KeyTap(key string, args ...interface{}) error {
540
563
// robotgo.KeyToggle("a", "up", "alt", "cmd")
541
564
// robotgo.KeyToggle("k", pid int)
542
565
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 ... )
565
568
return keyToggles (key , keyArr , pid )
566
569
}
567
570
0 commit comments