Как сделать автоматический кликер с глобальными клавишами запуска и остановки

Как сделать автоматический кликер с глобальными клавишами запуска и остановки

Итак, у меня есть скрипт автоматического кликера, представляющий собой простую команду:Дань уважения

xdotool click --delay 5 --repeat 900000 1

Мне приходится переключаться на терминал и Ctrl-Cпрерывать скрипт, чтобы остановить его. Затем просто запускать его снова, чтобы перезапустить.

Поэтому я начал использовать readкоманду для проверки ввода клавиш, чтобы избежать этого переключения туда-сюда. Однако это проверяет только ввод на терминале. Я нажимаю где-то еще и хочу иметь возможность начать и остановить оттуда.

Есть ли версия, readкоторая может проверять нажатия клавиш глобально?

решение1

Набрав xinput --list, вы получите список всех устройств ввода в вашей системе. Вы также можете программно получить состояние каждой клавиши, используя xinput --query-state DEVICE_ID.

1 class :
KeyClass
    key[0]=up
    key[1]=up
    key[2]=up
...

Сначала вам нужно будет выяснить, какой код клавиши вы хотите использовать. Вы можете сделать это, запустив xinput --test DEVICE_ID, и нажав клавишу.

key press   ###
key release ###

Как только вы найдете правильный ключ, создайте такой скрипт.

#!/bin/bash

while true; do

# Replace DEVICE_ID and KEYCODE.
inp=`xinput --query-state DEVICE_ID | grep -o 'button\[KEYCODE\]=down'`

if [ ! -z "$inp" ]; then

xdotool click 1

fi

done

Это будет спамить нажатием кнопки мыши, пока пользователь удерживает кнопку.

решение2

Вы можете использовать другое расширение - numlockx

Идея вот в чем.

вам нужно установить xdotools и numlockx черезsudo apt-get install -y numlockx xdotool

тогда вы бы пошли дальше и использовали что-то вроде этого.

DELAY=5
while true
do
  NUMLOCK=$(numlockx status)
    if [ "$NUMLOCK" == "Numlock is on" ]
    then
    xdotool click 1
    fi
  sleep $DELAY
done

В результате получается глобальный кликер с 5-секундной задержкой, связанной с вашей клавишей NumLock. Вы можете изменить задержку, чтобы клик срабатывал с более короткими интервалами.

Связанный контент