RobotGo,Go Native cross-platform system automation
C Objective-C C++ Go
Latest commit 50a74fa Jan 20, 2017 @vCaesar vCaesar Update md
Permalink
Failed to load latest commit information.
.github Add gitter Jan 6, 2017
base Update sequence #26 Jan 2, 2017
bitmap Update link Dec 10, 2016
docs Move doc and Update name Jan 19, 2017
event Move doc and Update name Jan 19, 2017
example Update example Jan 18, 2017
key Update link Dec 10, 2016
mouse Update link Dec 10, 2016
screen Update sequence Jan 2, 2017
test Update golint Dec 10, 2016
window Add Getpid Jan 18, 2017
.gitignore Update .gitignore Oct 11, 2016
CONTRIBUTING.md Update md Jan 10, 2017
LICENSE Update LICENSE Nov 30, 2016
README.md Update md Jan 20, 2017
README_zh.md Update md Jan 20, 2017
circle.yml Add circle Jan 5, 2017
robotgo.go Update ascii Jan 19, 2017

README.md

Robotgo

CircleCI Status Go Report Card GoDoc Release Join the chat at https://gitter.im/go-vgo/robotgo

Golang Desktop Automation. Control the mouse, keyboard, bitmap,read the screen,Window Handle and global event listener.

RobotGo supports Mac, Windows, and Linux(X11).

This is a work in progress.

API Document    中文文档

Please click API Document;This is a work in progress.

Requirements:

ALL:

Golang
//Gcc
zlib & libpng (bitmap)

For Mac OS X:

Xcode Command Line Tools
brew install libpng
brew install homebrew/dupes/zlib

For Windows:

MinGW or other GCC
zlib&libpng Windows32 GCC's Course
Download include zlib&libpng Windows64 GCC

For everything else:

GCC

X11 with the XTest extension (also known as the Xtst library)

Event:

xcb,xkb,libxkbcommon
Ubuntu:
sudo apt-get install libx11-dev
#sudo apt-get install libgtkglextmm-x11-dev
#sudo apt-get install libghc6-x11-dev
#sudo apt-get install libgl1-mesa-swx11-dev
sudo apt-get install xorg-dev

sudo apt-get install libxtst-dev libpng++-dev   

#Event:

sudo apt-get install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev
sudo apt-get install libxkbcommon-dev

Installation:

go get github.com/go-vgo/robotgo

It's that easy!

Update:

go get -u github.com/go-vgo/robotgo  

Examples:

Mouse

package main

import (
    "github.com/go-vgo/robotgo"
)

func main() {
  robotgo.ScrollMouse(10, "up")
  robotgo.MouseClick("left", true)
  robotgo.MoveMouseSmooth(100, 200, 1.0, 100.0)
} 

Keyboard

package main

import (
    "github.com/go-vgo/robotgo"
)

func main() {
  robotgo.TypeString("Hello World")
  robotgo.KeyTap("enter")
  robotgo.TypeString("en")
  robotgo.KeyTap("i", "alt", "command")
  arr := []string{"alt", "command"}
  robotgo.KeyTap("i", arr)
} 

Screen

package main

import (
    . "fmt"

    "github.com/go-vgo/robotgo"
)

func main() {
  x, y := robotgo.GetMousePos()
  Println("pos:", x, y)
  color := robotgo.GetPixelColor(100, 200)
  Println("color----", color)
} 

Bitmap

package main

import (
    . "fmt"

    "github.com/go-vgo/robotgo"
)

func main() {
  bit_map := robotgo.CaptureScreen(10, 20, 30, 40)
  Println("...", bit_map)

  fx, fy := robotgo.FindBitmap(bit_map)
  Println("FindBitmap------", fx, fy)

  robotgo.SaveBitmap(bit_map, "test.png")
} 

Event

package main

import (
    . "fmt"

    "github.com/go-vgo/robotgo"
)

func main() {
  keve := robotgo.AddEvent("k")
  if keve == 0 {
    Println("you press...", "k")
  }

  mleft := robotgo.AddEvent("mleft")
  if mleft == 0 {
    Println("you press...", "mouse left button")
  }
} 

Window

package main

import (
    . "fmt"

    "github.com/go-vgo/robotgo"
)

func main() {
  abool := robotgo.ShowAlert("test", "robotgo")
  if abool == 0 {
      Println("ok@@@", "ok")
  }

  title := robotgo.GetTitle()
  Println("title@@@", title)
} 

Future

  • Update Find an image on screen, read pixels from an image
  • Update Window Handle
  • Try support Android,maybe support IOS.

Contributors