Compare commits
10 Commits
026f522a89
...
603b4e87ef
Author | SHA1 | Date | |
---|---|---|---|
603b4e87ef | |||
91825584cd | |||
b21e09cbb7 | |||
340e193ab6 | |||
4d2dbe71e9 | |||
0e7d512413 | |||
916edd704b | |||
30f017af72 | |||
2c12ef6df8 | |||
1b9d849472 |
9
autoclick.go
Normal file
9
autoclick.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gogs.davte.it/Davte/autoclick/helper"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
helper.RunAutoClicker()
|
||||||
|
}
|
@ -1,9 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"gogs.davte.it/davte/autoclick"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
autoclick.RunAutoClicker()
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package autoclick
|
package helper
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -22,9 +23,17 @@ func (p Point) String() string {
|
|||||||
return fmt.Sprintf("(%v, %v)", p.X, p.Y)
|
return fmt.Sprintf("(%v, %v)", p.X, p.Y)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p Point) Click() {
|
func (p Point) Click(button ...string) {
|
||||||
|
buttonToClick := "left"
|
||||||
|
if len(button) > 0 && (button[0] == "left" || button[0] == "right") {
|
||||||
|
buttonToClick = button[0]
|
||||||
|
}
|
||||||
robotgo.Move(p.X, p.Y)
|
robotgo.Move(p.X, p.Y)
|
||||||
robotgo.Click("left", false)
|
robotgo.Click(buttonToClick, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Point) RightClick() {
|
||||||
|
p.Click("right")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p1 *Point) GetDistance(p2 *Point) float64 {
|
func (p1 *Point) GetDistance(p2 *Point) float64 {
|
||||||
@ -145,7 +154,16 @@ func StringOscillator(s string, amplitude int) chan string {
|
|||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
func ClickRepeteadly(s *SavedGroups) {
|
func press(key string) {
|
||||||
|
robotgo.KeyTap(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
func keyboardWrite(s string) {
|
||||||
|
robotgo.TypeStr(s)
|
||||||
|
robotgo.MilliSleep(100)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ClickRepeatedly(s *SavedGroups, c chan os.Signal) {
|
||||||
for index, g := range s.Groups {
|
for index, g := range s.Groups {
|
||||||
fmt.Printf("- Press %v to select %v\n", index+1, g.Name)
|
fmt.Printf("- Press %v to select %v\n", index+1, g.Name)
|
||||||
}
|
}
|
||||||
@ -159,6 +177,9 @@ func ClickRepeteadly(s *SavedGroups) {
|
|||||||
fmt.Scanln(&discard)
|
fmt.Scanln(&discard)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if choice > len(s.Groups) {
|
||||||
|
choice = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
selection := s.Groups[choice-1]
|
selection := s.Groups[choice-1]
|
||||||
fmt.Printf("You selected %v. I'll be clicking in the following positions:\n", selection.Name)
|
fmt.Printf("You selected %v. I'll be clicking in the following positions:\n", selection.Name)
|
||||||
@ -167,10 +188,32 @@ func ClickRepeteadly(s *SavedGroups) {
|
|||||||
}
|
}
|
||||||
o := StringOscillator(".", 15)
|
o := StringOscillator(".", 15)
|
||||||
var t int
|
var t int
|
||||||
|
n := 1
|
||||||
var minDistance float64
|
var minDistance float64
|
||||||
for {
|
for {
|
||||||
for _, p := range selection.Points {
|
for i, p := range selection.Points {
|
||||||
|
if selection.Name == "akoya" { // hardcoded for Akoya presentation. #TODO: better handling (selection action list)
|
||||||
|
if i == 0 {
|
||||||
|
p.RightClick()
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
press("v")
|
||||||
|
time.Sleep(500 * time.Millisecond)
|
||||||
|
} else if i == 1 {
|
||||||
|
time.Sleep(200 * time.Millisecond)
|
||||||
p.Click()
|
p.Click()
|
||||||
|
time.Sleep(200 * time.Millisecond)
|
||||||
|
keyboardWrite(strconv.Itoa(n))
|
||||||
|
n++
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
press("enter")
|
||||||
|
time.Sleep(500 * time.Millisecond)
|
||||||
|
} else {
|
||||||
|
p.Click()
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
p.Click()
|
||||||
|
}
|
||||||
time.Sleep(100 * time.Millisecond)
|
time.Sleep(100 * time.Millisecond)
|
||||||
}
|
}
|
||||||
fmt.Println(<-o)
|
fmt.Println(<-o)
|
||||||
@ -188,6 +231,7 @@ func ClickRepeteadly(s *SavedGroups) {
|
|||||||
}
|
}
|
||||||
if t >= 10 {
|
if t >= 10 {
|
||||||
fmt.Println("You stayed away too long, exiting...")
|
fmt.Println("You stayed away too long, exiting...")
|
||||||
|
c <- os.Interrupt
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -203,15 +247,19 @@ func cleanUp(c chan os.Signal) chan int {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func interactWithUser(s *SavedGroups, yamlFile string, c chan os.Signal) {
|
||||||
|
addSavedGroup(s)
|
||||||
|
storeSavedGroups(s, yamlFile)
|
||||||
|
ClickRepeatedly(s, c)
|
||||||
|
}
|
||||||
|
|
||||||
func RunAutoClicker() {
|
func RunAutoClicker() {
|
||||||
c := make(chan os.Signal, 1)
|
c := make(chan os.Signal, 1)
|
||||||
quit := cleanUp(c)
|
quit := cleanUp(c)
|
||||||
signal.Notify(c, os.Interrupt)
|
signal.Notify(c, os.Interrupt)
|
||||||
yamlFile := "SavedGroups.yaml"
|
yamlFile := "SavedGroups.yaml"
|
||||||
s := getSavedGroups(yamlFile)
|
s := getSavedGroups(yamlFile)
|
||||||
addSavedGroup(s)
|
go interactWithUser(s, yamlFile, c)
|
||||||
storeSavedGroups(s, yamlFile)
|
|
||||||
go ClickRepeteadly(s)
|
|
||||||
if <-quit == 1 {
|
if <-quit == 1 {
|
||||||
fmt.Println("Exiting...")
|
fmt.Println("Exiting...")
|
||||||
} else {
|
} else {
|
Loading…
x
Reference in New Issue
Block a user