From 6d53341ca6dd07f1858921770bc1650773aeb0f7 Mon Sep 17 00:00:00 2001 From: bvn13 Date: Tue, 1 Sep 2026 01:55:22 +0300 Subject: [PATCH] mouse mover --- application.yaml | 6 ++++ pom.xml | 31 ++++++++++++++++++ src/main/java/MouseMover.java | 59 +++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 application.yaml create mode 100644 pom.xml create mode 100644 src/main/java/MouseMover.java diff --git a/application.yaml b/application.yaml new file mode 100644 index 0000000..027f92f --- /dev/null +++ b/application.yaml @@ -0,0 +1,6 @@ +# на сколько пикселей сдвигать курсор вправо +pixels: 10 +# через сколько миллисекунд срабатывает триггер (сдвиг вправо) +trigger-interval: 1000 +# через сколько миллисекунд курсор возвращается влево +return-interval: 1000 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e9342c1 --- /dev/null +++ b/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + ru.bvn13 + mouse-mover + 1.0.0 + + + 21 + UTF-8 + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + MouseMover + + + + + + + diff --git a/src/main/java/MouseMover.java b/src/main/java/MouseMover.java new file mode 100644 index 0000000..34e45d2 --- /dev/null +++ b/src/main/java/MouseMover.java @@ -0,0 +1,59 @@ +import java.awt.MouseInfo; +import java.awt.Point; +import java.awt.Robot; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashMap; +import java.util.Map; + +public class MouseMover { + + public static void main(String[] args) throws Exception { + Path configPath = Path.of(args.length > 0 ? args[0] : "application.yaml"); + Map config = readYaml(configPath); + + int pixels = intValue(config, "pixels"); + int triggerInterval = intValue(config, "trigger-interval"); + int returnInterval = intValue(config, "return-interval"); + + System.out.printf("pixels=%d, trigger-interval=%dms, return-interval=%dms%n", + pixels, triggerInterval, returnInterval); + + Robot robot = new Robot(); + while (true) { + Thread.sleep(triggerInterval); + move(robot, pixels); + Thread.sleep(returnInterval); + move(robot, -pixels); + } + } + + private static void move(Robot robot, int dx) { + Point p = MouseInfo.getPointerInfo().getLocation(); + robot.mouseMove(p.x + dx, p.y); + } + + private static Map readYaml(Path path) throws Exception { + Map values = new HashMap<>(); + for (String line : Files.readAllLines(path)) { + String trimmed = line.trim(); + if (trimmed.isEmpty() || trimmed.startsWith("#")) { + continue; + } + int colon = trimmed.indexOf(':'); + if (colon < 0) { + continue; + } + values.put(trimmed.substring(0, colon).trim(), trimmed.substring(colon + 1).trim()); + } + return values; + } + + private static int intValue(Map config, String key) { + String value = config.get(key); + if (value == null || value.isEmpty()) { + throw new IllegalStateException("Missing property: " + key); + } + return Integer.parseInt(value); + } +}