2025-08-18 09:08:00 +03:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/go-vgo/robotgo"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func checkActive(x *int, y *int, active *bool) {
|
|
|
|
|
// Current x, and Current Y
|
|
|
|
|
cX, cY := robotgo.Location()
|
|
|
|
|
|
|
|
|
|
if cX == *x && cY == *y {
|
|
|
|
|
*active = false
|
|
|
|
|
} else {
|
|
|
|
|
*active = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*x = cX
|
|
|
|
|
*y = cY
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-18 09:15:14 +03:00
|
|
|
func moveMouse(active *bool) {
|
|
|
|
|
// If inactive, move mouse to 100px right, and back
|
|
|
|
|
if !*active {
|
|
|
|
|
fmt.Println("Moving mouse")
|
|
|
|
|
robotgo.MoveSmoothRelative(100, 0)
|
|
|
|
|
time.Sleep(1 * time.Second)
|
|
|
|
|
robotgo.MoveSmoothRelative(-100, 0)
|
|
|
|
|
}
|
2025-08-18 09:08:00 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
x := 0
|
|
|
|
|
y := 0
|
|
|
|
|
active := true
|
|
|
|
|
|
|
|
|
|
// Create tickers
|
2025-08-18 09:15:14 +03:00
|
|
|
ticker1 := time.NewTicker(1 * time.Minute)
|
|
|
|
|
ticker2 := time.NewTicker(3 * time.Minute)
|
|
|
|
|
// ticker1 := time.NewTicker(10 * time.Second)
|
|
|
|
|
// ticker2 := time.NewTicker(20 * time.Second)
|
2025-08-18 09:08:00 +03:00
|
|
|
|
|
|
|
|
defer ticker1.Stop()
|
|
|
|
|
defer ticker2.Stop()
|
|
|
|
|
|
|
|
|
|
// Run initial calls (optional)
|
|
|
|
|
checkActive(&x, &y, &active)
|
|
|
|
|
|
|
|
|
|
// Goroutine to handle ticks
|
|
|
|
|
for {
|
|
|
|
|
select {
|
|
|
|
|
case <-ticker1.C:
|
|
|
|
|
checkActive(&x, &y, &active)
|
|
|
|
|
case <-ticker2.C:
|
2025-08-18 09:15:14 +03:00
|
|
|
moveMouse(&active)
|
2025-08-18 09:08:00 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|