diff --git a/.gitignore b/.gitignore index 3e2dcc8..c97edc9 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,8 @@ examples/bitmap/test_IMG.png examples/bitmap/imgToBitmap/test_01.png examples/bitmap/imgToBitmap/test_002.jpeg examples/bitmap/imgToBitmap/test_003.jpeg +examples/bitmap/imgToBitmap/test_1.png +examples/bitmap/imgToBitmap/test_2.jpeg +examples/bitmap/imgToBitmap/test.png +examples/bitmap/imgToBitmap/test_7.jpeg +robot_img.png diff --git a/README.md b/README.md index 9b82400..d8a0c44 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ Note go1.10.x C file compilation cache problem, [golang #24355](https://github.c package main import ( - "github.com/go-vgo/robotgo" + "github.com/go-vgo/robotgo" ) func main() { @@ -183,9 +183,9 @@ func main() { package main import ( - "fmt" + "fmt" - "github.com/go-vgo/robotgo" + "github.com/go-vgo/robotgo" ) func main() { @@ -196,7 +196,7 @@ func main() { fmt.Println("color---- ", color) sx, sy := robotgo.GetScreenSize() - fmt.Println("get screen size: ", sx, sy) + fmt.Println("get screen size: ", sx, sy) } ``` @@ -206,9 +206,9 @@ func main() { package main import ( - "fmt" + "fmt" - "github.com/go-vgo/robotgo" + "github.com/go-vgo/robotgo" ) func main() { @@ -302,9 +302,9 @@ func event() { package main import ( - "fmt" + "fmt" - "github.com/go-vgo/robotgo" + "github.com/go-vgo/robotgo" ) func main() { diff --git a/README_zh.md b/README_zh.md index ce80829..cf85f8a 100644 --- a/README_zh.md +++ b/README_zh.md @@ -194,7 +194,7 @@ func main() { fmt.Println("color----", color) sx, sy := robotgo.GetScreenSize() - fmt.Println("get screen size: ", sx, sy) + fmt.Println("get screen size: ", sx, sy) } ``` diff --git a/clipboard/clipboard_darwin.go b/clipboard/clipboard_darwin.go index 58d4a2d..eedd4c3 100644 --- a/clipboard/clipboard_darwin.go +++ b/clipboard/clipboard_darwin.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build darwin // +build darwin package clipboard diff --git a/clipboard/clipboard_unix.go b/clipboard/clipboard_unix.go index dcae808..fde35cb 100644 --- a/clipboard/clipboard_unix.go +++ b/clipboard/clipboard_unix.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build freebsd || linux || netbsd || openbsd || solaris || dragonfly // +build freebsd linux netbsd openbsd solaris dragonfly package clipboard diff --git a/clipboard/clipboard_windows.go b/clipboard/clipboard_windows.go index 406bb65..2b9202e 100644 --- a/clipboard/clipboard_windows.go +++ b/clipboard/clipboard_windows.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build windows // +build windows package clipboard diff --git a/examples/bitmap/imgToBitmap/main.go b/examples/bitmap/imgToBitmap/main.go index f6179ea..0d6d8a4 100644 --- a/examples/bitmap/imgToBitmap/main.go +++ b/examples/bitmap/imgToBitmap/main.go @@ -1,14 +1,22 @@ +//go:build go1.16 +// +build go1.16 + package main import ( + _ "embed" "fmt" "github.com/go-vgo/robotgo" "github.com/vcaesar/imgo" ) +//go:embed test_007.jpeg +var testPng []byte + func main() { bit1 := robotgo.CaptureScreen(300, 300, 100, 100) + defer robotgo.FreeBitmap(bit1) robotgo.SaveBitmap(bit1, "test_003.jpeg") m1 := robotgo.ToImage(bit1) @@ -20,4 +28,25 @@ func main() { bit2 := robotgo.ToCBitmap(robotgo.ImgToBitmap(m1)) robotgo.SaveBitmap(bit2, "test_002.jpeg") + + test() +} + +func test() { + bitmap := robotgo.CaptureScreen(10, 10, 10, 10) + defer robotgo.FreeBitmap(bitmap) + + img := robotgo.ToImage(bitmap) + robotgo.SavePng(img, "test_1.png") + + img1, _ := robotgo.ByteToImg(testPng) + robotgo.SaveJpeg(img1, "test_7.jpeg") + + bit2 := robotgo.ToCBitmap(robotgo.ImgToBitmap(img)) + fx, fy := robotgo.FindBitmap(bit2) + fmt.Println("FindBitmap------ ", fx, fy) + + arr := robotgo.FindEveryBitmap(bit2) + fmt.Println("Find every bitmap: ", arr) + robotgo.SaveBitmap(bitmap, "test.png") } diff --git a/examples/bitmap/imgToBitmap/test_007.jpeg b/examples/bitmap/imgToBitmap/test_007.jpeg new file mode 100644 index 0000000..0823de1 Binary files /dev/null and b/examples/bitmap/imgToBitmap/test_007.jpeg differ diff --git a/go.mod b/go.mod index 56fa8ac..7cf0e86 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,33 @@ module github.com/go-vgo/robotgo +go 1.17 + require ( - github.com/davecgh/go-spew v1.1.1 // indirect github.com/lxn/win v0.0.0-20210218163916-a377121e959e - github.com/otiai10/curr v1.0.0 // indirect github.com/otiai10/gosseract v2.2.1+incompatible github.com/robotn/gohook v0.31.1 github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934 github.com/robotn/xgbutil v0.0.0-20190912154524-c861d6f87770 - github.com/vcaesar/gops v0.21.1 + github.com/vcaesar/gops v0.21.2 github.com/vcaesar/imgo v0.20.0 github.com/vcaesar/tt v0.11.0 golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d golang.org/x/net v0.0.0-20201110031124-69a78807bb2b // indirect ) +require ( + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-ole/go-ole v1.2.5 // indirect + github.com/otiai10/mint v1.3.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/shirou/gopsutil v3.21.8+incompatible // indirect + github.com/tklauser/go-sysconf v0.3.9 // indirect + github.com/tklauser/numcpus v0.3.0 // indirect + golang.org/x/sys v0.0.0-20210915083310-ed5796bab164 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) + // replace golang.org/x/sys => github.com/golang/sys v0.0.0-20190109145017-48ac38b7c8cb -go 1.13 +// go 1.13 diff --git a/go.sum b/go.sum index 7f4a1fa..402ddca 100644 --- a/go.sum +++ b/go.sum @@ -10,8 +10,6 @@ github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc= github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= -github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI= -github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/gosseract v2.2.1+incompatible h1:Ry5ltVdpdp4LAa2bMjsSJH34XHVOV7XMi41HtzL8X2I= github.com/otiai10/gosseract v2.2.1+incompatible/go.mod h1:XrzWItCzCpFRZ35n3YtVTgq5bLAhFIkascoRo8G32QE= github.com/otiai10/mint v1.3.0 h1:Ady6MKVezQwHBkGzLFbrsywyp09Ah7rkmfjV3Bcr5uc= @@ -24,18 +22,17 @@ github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934 h1:2lhSR8N3T6I30q096DT7 github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934/go.mod h1:SxQhJskUJ4rleVU44YvnrdvxQr0tKy5SRSigBrCgyyQ= github.com/robotn/xgbutil v0.0.0-20190912154524-c861d6f87770 h1:2uX8QRLkkxn2EpAQ6I3KhA79BkdRZfvugJUzJadiJwk= github.com/robotn/xgbutil v0.0.0-20190912154524-c861d6f87770/go.mod h1:svkDXUDQjUiWzLrA0OZgHc4lbOts3C+uRfP6/yjwYnU= -github.com/shirou/gopsutil v3.21.7+incompatible h1:g/wcPHcuCQvHSePVofjQljd2vX4ty0+J6VoMB+NPcdk= -github.com/shirou/gopsutil v3.21.7+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.8+incompatible h1:sh0foI8tMRlCidUJR+KzqWYWxrkuuPIGiO6Vp+KXdCU= +github.com/shirou/gopsutil v3.21.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tklauser/go-sysconf v0.3.8 h1:41Nq9J+pxKud4IQ830J5LlS5nl67dVQC7AuisUooaOU= -github.com/tklauser/go-sysconf v0.3.8/go.mod h1:z4zYWRS+X53WUKtBcmDg1comV3fPhdQnzasnIHUoLDU= -github.com/tklauser/numcpus v0.2.3/go.mod h1:vpEPS/JC+oZGGQ/My/vJnNsvMDQL6PwOqt8dsCw5j+E= +github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= +github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= -github.com/vcaesar/gops v0.21.1 h1:a8ZCbho+K3RP1+hlkGCSWih84Iu3hjXYKwZW3970hkg= -github.com/vcaesar/gops v0.21.1/go.mod h1:upqQTBNSvazU+AvHwXY7VPdJscLoOqOxw+vkmJKnjEk= +github.com/vcaesar/gops v0.21.2 h1:OwWoJR0zb+AK41TN2adhZUP9lAmaRMzkWwf7Ux5Mx00= +github.com/vcaesar/gops v0.21.2/go.mod h1:BEJGigAc9GORbEegWX9rRon/qwibjDs8p50WYm2KlXw= github.com/vcaesar/imgo v0.20.0 h1:lX7a2vygTri0Z3VYpwoQA2LPvbphFyT5ON4NTqdC4wQ= github.com/vcaesar/imgo v0.20.0/go.mod h1:eJscuTEdc6sVn/hZruy8kWi61xqKHLtbAYyPeYcn+t4= github.com/vcaesar/tt v0.11.0 h1:obQecjgbnAxxC6OYGY6yDvhGRW2PR5wD8Ma2uJH3WGA= @@ -52,15 +49,14 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210820121016-41cdb8703e55 h1:rw6UNGRMfarCepjI8qOepea/SXwIBVfTKjztZ5gBbq4= -golang.org/x/sys v0.0.0-20210820121016-41cdb8703e55/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210915083310-ed5796bab164 h1:7ZDGnxgHAMw7thfC5bEos0RDAccZKxioiWBhfIe+tvw= +golang.org/x/sys v0.0.0-20210915083310-ed5796bab164/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/robotgo.go b/robotgo.go index 08ab002..5ac3edd 100644 --- a/robotgo.go +++ b/robotgo.go @@ -63,6 +63,7 @@ import ( "unsafe" // "syscall" + "math/rand" "os/exec" "github.com/go-vgo/robotgo/clipboard" @@ -697,6 +698,23 @@ func KeyToggle(key string, args ...string) string { return C.GoString(str) } +// KeyPress press key string +func KeyPress(key string) { + KeyDown(key) + Sleep(15 + rand.Intn(10)) + KeyUp(key) +} + +// KeyDown press down a key +func KeyDown(key string) { + KeyToggle(key, "down") +} + +// KeyUp press up a key +func KeyUp(key string) { + KeyToggle(key, "up") +} + // ReadAll read string from clipboard func ReadAll() (string, error) { return clipboard.ReadAll() diff --git a/robotgo_mac_win.go b/robotgo_mac_win.go index 53d7541..de6d21a 100644 --- a/robotgo_mac_win.go +++ b/robotgo_mac_win.go @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +//go:build darwin || windows // +build darwin windows package robotgo diff --git a/robotgo_ocr.go b/robotgo_ocr.go index 6e1939f..b931a85 100644 --- a/robotgo_ocr.go +++ b/robotgo_ocr.go @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +//go:build ocr // +build ocr package robotgo diff --git a/robotgo_test.go b/robotgo_test.go index cce772a..9eb2de8 100644 --- a/robotgo_test.go +++ b/robotgo_test.go @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +//go:build darwin || windows // +build darwin windows package robotgo diff --git a/robotgo_unix.go b/robotgo_unix.go index 1463e75..009c9d4 100644 --- a/robotgo_unix.go +++ b/robotgo_unix.go @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +//go:build !darwin && !windows // +build !darwin,!windows package robotgo diff --git a/robotgo_win.go b/robotgo_win.go index eac9a9d..46a3808 100644 --- a/robotgo_win.go +++ b/robotgo_win.go @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +//go:build windows // +build windows package robotgo