Skip to content

Repository files navigation

DP Autoclicker

Автокликер с плавающим полупрозрачным окном, визуальным конструктором алгоритмов и переносимыми пресетами. Написан на Python + PySide6 (Qt 6).

python -m pip install -r requirements.txt
python run.py

Что умеет

Плавающее окно Без рамки, поверх всех окон, регулируемая прозрачность, перетаскивание за заголовок, компактный режим и «прозрачность для мыши» на время работы.
Точки нажатия Полноэкранный прицел с лупой ×8 и попиксельной подстройкой стрелками. Каждая точка — с именем, цветом, заметкой и личным радиусом разброса.
Визуальный конструктор Дерево блоков: перетаскивание мышью, вложенность, панель свойств. Учить синтаксис не нужно.
Скрипт Тот же алгоритм текстом, с подсветкой и проверкой на лету. Конструктор и скрипт — две проекции одного дерева, изменения идут в обе стороны.
Рандомизация Разброс координат, «не бить дважды в одно место», разброс пауз, удержание кнопки, плавное движение курсора, случайные «отвлечения». Выключена по умолчанию.
Пресеты Один JSON-файл с точками, алгоритмом и настройками — им можно поделиться. При открытии на другом мониторе координаты пересчитываются.
Страховка Если вы сами взялись за мышь и увели курсор, алгоритм сразу встаёт на паузу — можно продолжить, когда будете готовы.
Безопасность Сухой прогон без реальных нажатий, обратный отсчёт перед стартом, лимиты по времени и числу действий, глобальные горячие клавиши, защита от «пустого» бесконечного цикла.

Установка

Нужен Python 3.9 или новее.

git clone https://github.com/dpsmpx/DP_Autoclicker.git
cd DP_Autoclicker
python -m pip install -r requirements.txt
python run.py

Зависимости: PySide6 — интерфейс, pynput — реальный ввод и глобальные горячие клавиши. Если pynput недоступен (например, нет графической сессии), программа всё равно запустится: алгоритм можно собрать, проверить сухим прогоном и сохранить, но реальных нажатий не будет.

На Linux нужен X11. На macOS программе потребуется разрешение «Универсальный доступ» → «Мониторинг ввода».

Быстрый старт

  1. Точки → «Указать на экране» → навести прицел и нажать. Точка получит имя вроде Точка1 — по нему на неё ссылается алгоритм.
  2. Алгоритм → «Добавить блок» → например «Бесконечный цикл», внутрь него — «Клик» и «Пауза».
  3. Настройки → при желании включить рандомизацию и «Сухой прогон» для первой проверки.
  4. Старт (или F6). Остановка — F6, аварийная остановка — F8.

Горячие клавиши работают глобально — окно может быть не в фокусе.

Клавиша Действие
F6 старт / стоп
F7 пауза / продолжить
F8 аварийная остановка
F2 добавить точку под курсором

Переназначить их можно на вкладке «Настройки»: сочетание пишется как f6, ctrl+shift+s, alt+f4. Поле подсвечивается красным, если сочетание записано неверно или уже занято другим действием; кнопка «Проверить сейчас» перерегистрирует клавиши и показывает результат. Одно неверное сочетание не ломает остальные — они продолжают работать.

Если горячие клавиши недоступны (нет графической сессии, не выданы права в macOS), программа честно пишет причину под полями настройки, а управлять можно кнопками в окне.

Клавиши, которые нажимает сам алгоритм (клавиша f6 в скрипте), не считаются командами: скрипт не может случайно остановить сам себя. Настоящее нажатие пользователя при этом не теряется.

Язык алгоритма

Блоки конструктора и текст скрипта — одно и то же. Полное описание: docs/SCRIPT.md.

# ферма ресурсов
повторить 20 раз {
    клик Кнопка_действия
    ждать 400мс..900мс          # случайная пауза

    если итерация остаток 5 == 0 {
        клик Кнопка_проверки кнопкой правая
        ждать 1с
        клавиша esc
    }

    если шанс(15%) {            # изредка «отвлекаемся»
        ждать 2с..4с
    }
}
сообщение "Цикл завершён"

Ключевые слова понимаются и по-русски, и по-английски: клик = click, повторить = repeat. Диалект вывода переключается на вкладке «Скрипт».

Страховка от вмешательства

Если во время работы вы сами двигаете мышью, алгоритм мешает вам, а вы — ему. Поэтому программа следит за курсором: после каждого своего перемещения она запоминает, где курсор оказался, и если он уехал не по её воле дальше порога (по умолчанию 40 px), работа встаёт на паузу с пометкой «вы двигали мышью». Продолжить можно кнопкой «Продолжить» или клавишей F7.

Настраивается на вкладке «Настройки» → «Страховка»: порог срабатывания и режим «останавливать, а не ставить на паузу».

Слежение включается только после того, как алгоритм сам передвинул курсор. До старта и в алгоритмах, которые работают одной клавиатурой, мышь свободна. Настройка хранится в настройках программы, а не в пресете: чужой пресет не может отключить вашу защиту.

Рандомизация

Рандомизация — опция, а не поведение по умолчанию. Пока главный переключатель выключен, программа кликает ровно в заданные координаты и выдерживает точные паузы.

Когда включена:

  • Разброс координат — нажатие в круге / квадрате / по Гауссу вокруг точки. У каждой точки может быть свой радиус (0 — брать общий).
  • Не бить дважды в одно место — следующая позиция подбирается так, чтобы отличаться от предыдущей минимум на заданное расстояние.
  • Разброс пауз — ±% к каждой паузе.
  • Удержание кнопки — случайное время между нажатием и отпусканием.
  • Плавное движение курсора — по дуге Безье с плавным разгоном.
  • Шанс «отвлечься» — редкие длинные паузы.
  • Зерно случайности — ненулевое делает поведение повторяемым.

Независимо от настроек в самом алгоритме можно писать диапазоны: ждать 100мс..900мс — это явное намерение пользователя, оно работает всегда.

Пресеты

Пресет — один файл *.dpclick.json с точками, алгоритмом, рандомизацией и параметрами запуска. Меню «Пресеты» (кнопка справа от «Паузы»): создать, библиотека, сохранить, импорт, экспорт, свойства.

Библиотека лежит в ~/.dp_autoclicker/presets/, готовые примеры — в каталоге presets/. Пресет запоминает разрешение экрана, на котором собирался; при открытии на другом мониторе программа предложит пересчитать координаты.

Проверка работоспособности

python -m dp_autoclicker --self-check   # быстрая самопроверка
python -m pytest -q                     # полный набор тестов

Три теста требуют настоящего графического сеанса и в обычном прогоне пропускаются — они проверяют реальный курсор и реальные горячие клавиши:

xvfb-run -a python -m pytest tests/test_live_input.py -q   # или просто на своём экране

Самопроверка разбирает и исполняет все встроенные примеры, прогоняет алгоритм через движок на «пустом» драйвере ввода, убеждается, что страховка ставит алгоритм на паузу при движении мыши, что сочетания клавиш разбираются без конфликтов, и сообщает, доступны ли реальный ввод и глобальные клавиши.

Тесты (149 штук) покрывают модели и пресеты, лексер/парсер/принтер языка, интерпретатор, рандомизацию, движок с паузой, остановкой и страховкой, горячие клавиши, хранилище — и интерфейс: окно, все пять страниц, конструктор блоков, синхронизацию с текстом скрипта, прицел, доставку горячих клавиш из чужого потока. Тесты интерфейса работают в режиме offscreen, монитор не нужен; три «живых» теста нажимают настоящие клавиши и двигают настоящий курсор.

Устройство

dp_autoclicker/
├── core/                  логика без Qt — можно использовать отдельно
│   ├── models.py          точки, пресет, настройки, сохранение
│   ├── storage.py         библиотека пресетов и конфиг программы
│   ├── engine.py          исполнение в потоке: пауза, остановка, страховка
│   ├── hotkeys.py         глобальные горячие клавиши и проверка сочетаний
│   ├── templates.py       примеры пресетов
│   ├── script/            язык: лексер → парсер → дерево → принтер
│   ├── runtime/           интерпретатор, рандомизация, действия
│   └── backends/          драйверы ввода (pynput и «сухой прогон»)
└── ui/                    интерфейс на PySide6
    ├── main_window.py     плавающее окно, транспорт, горячие клавиши
    ├── picker.py          полноэкранный прицел с лупой
    ├── pages/             точки, алгоритм, скрипт, настройки, журнал
    └── widgets/           тумблеры, карточки, редакторы значений

Ядро не зависит от Qt и не требует экрана: dp_autoclicker.core можно импортировать в скриптах и тестах.

Ответственность

Инструмент автоматизирует нажатия мыши и клавиатуры на вашем компьютере. Проверяйте, что такая автоматизация не нарушает правила программ и сервисов, с которыми вы её используете.

Лицензия

GPL-3.0 — см. LICENSE.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages