Автокликер с плавающим полупрозрачным окном, визуальным конструктором алгоритмов и переносимыми пресетами. Написан на 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— по нему на неё ссылается алгоритм. - Алгоритм → «Добавить блок» → например «Бесконечный цикл», внутрь него — «Клик» и «Пауза».
- Настройки → при желании включить рандомизацию и «Сухой прогон» для первой проверки.
- Старт (или
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.