Як автоматично клікати мишею у вказаному місці

Як автоматично клікати мишею у вказаному місці
Категорії: Скрипти та автоматизація

Іноді потрібно багато разів натиснути в тому самому місці: наприклад, підтвердити однакові вікна або повторити один і той самий клік. Робити це вручну нудно. У Linux є маленька програма xdotool: вона вміє імітувати клік миші й натискання клавіш. Нижче покроково показуємо, як налаштувати автоклік.

Важливо знати: xdotool працює лише в сеансі X11 (це один зі способів, як система малює вікна на екрані). Перевірте, який у вас сеанс, у терміналі (вікні для команд):

echo $XDG_SESSION_TYPE

Якщо відповідь x11, усе працюватиме. Якщо wayland, на екрані входу виберіть сеанс «на X11» (шестерня біля кнопки входу) або скористайтеся програмою ydotool, про яку сказано нижче.

Крок 1. Встановіть xdotool

# Ubuntu, Linux Mint, Debian
sudo apt install xdotool

# Fedora
sudo dnf install xdotool

Крок 2. Дізнайтеся координати місця для кліку

Координати — це два числа: на скільки пікселів точка знаходиться від лівого й від верхнього краю екрана. Наведіть курсор на потрібне місце, не натискаючи, і виконайте:

xdotool getmouselocation

Але коли ви набираєте команду, курсор уже в терміналі. Тому зробіть так, щоб команда спрацювала із затримкою:

sleep 5; xdotool getmouselocation

Натисніть Enter і за п’ять секунд наведіть курсор на потрібну кнопку. У відповіді побачите щось на кшталт x:850 y:420: ці числа нам і потрібні.

Крок 3. Зробіть один клік

Перевірте, що все працює: перемістіть курсор у знайдену точку й клацніть лівою кнопкою.

xdotool mousemove 850 420 click 1

Цифра 1 означає ліву кнопку миші. Права кнопка — 3, коліщатко — 2.

Крок 4. Повторіть клік кілька разів

Щоб клікнути, наприклад, 10 разів із паузою півсекунди, скористайтеся циклом:

for i in $(seq 1 10); do xdotool click 1; sleep 0.5; done

Спершу наведіть курсор на потрібне місце вручну (або додайте xdotool mousemove 850 420 перед кліком). Пауза sleep потрібна, щоб програма встигала реагувати.

Крок 5. Як зупинити автоклік

Якщо клік пішов не туди чи його забагато, поверніться у термінал і натисніть Ctrl+C. Цикл одразу припиниться. Саме тому кількість повторів краще робити невеликою, поки ви не впевнені в результаті.

Корисна додаткова можливість: натискання клавіш

Те саме можна робити з клавіатурою. Наприклад, надрукувати слово або натиснути Enter:

xdotool type "Привіт"
xdotool key Return

Якщо у вас Wayland

У сеансі Wayland xdotool не може керувати чужими вікнами. Тоді допоможе схожа програма ydotool. Вона працює через службу ydotoold, яку треба запустити окремо. Для простих випадків найпростіше перемкнутися на X11.

Поширені запитання

Команда «xdotool: command not found»

Програма не встановлена. Виконайте команду встановлення з кроку 1 і спробуйте ще раз.

Клік нічого не робить

Найчастіше це Wayland. Перевірте сеанс командою echo $XDG_SESSION_TYPE і за потреби перейдіть на X11.

Клік потрапляє не туди

Перевірте координати ще раз. Якщо у вас кілька моніторів, число x відраховується від лівого краю всієї площі екранів, а не одного монітора.

Чи небезпечно це?

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

Порада від Kernelka

Запишіть робочу команду у файл-скрипт і назвіть його зрозуміло, наприклад, klik.sh. Тоді наступного разу не доведеться шукати координати й згадувати параметри.

Підсумок

  • xdotool імітує клік миші та натискання клавіш; працює в X11.
  • Координати дізнаємось командою xdotool getmouselocation.
  • Один клік: xdotool mousemove X Y click 1.
  • Багато кліків: цикл for із паузою sleep.
  • Зупинити можна комбінацією Ctrl+C.

Прокоментувати

На сайті відображається лише твоє ім'я та коментар. Електронна пошта використовується виключно для зв'язку з тобою за потреби.