Могу ли я использовать xdotool в качестве авто-кликера?

5

Есть ли способ использовать xdotoolопределенное количество щелчков мышью в секунду, удерживая нажатой определенную клавишу?

user276059
источник
2
Вы хотите, чтобы xdotool нажимал и удерживал клавишу, или вы хотите, чтобы xdotool нажимал, когда вы удерживаете клавишу?
Сет

Ответы:

1

Это мой скрипт для bash xdotool. Вы можете установить его с помощью сочетания клавиш. Останавливается, когда вы двигаете мышь. Конечно, вы можете сделать свой собственный сценарий на свой вкус.

#!/bin/bash
eval $(xdotool getmouselocation --shell)
echo $X $Y
x1=$X
y1=$Y
COUNTER=1
COUNTEND=100000
#REPEAT= 0.09s
while [ $COUNTER -lt $COUNTEND ]; do
  echo the counter is $COUNTER
  xdotool click 1
  eval $(xdotool getmouselocation --shell)
  # cancel if mouse moved
  if [ $x1 != $X ] || [ $y1 != $Y ]; then
    echo Mouse moved - script terminated
    exit 1
  fi
  #this sleep works for repetition rate
  sleep 0.01s
  let COUNTER=COUNTER+1
#  xdotool click --delay 90 --repeat 1000 1
done
Фернандо Д Хайме
источник
Неплохо! Я ожидаю, что разветвление и выполнение 4 новых процессов каждые 10 мс потребует значительного количества ресурсов и довольно сильно заблокирует ядро ​​в критических секциях. Можете ли вы портировать сценарий на что-то вроде Python, Perl или C, который использует libxdoили подобную библиотеку напрямую, без необходимости так часто создавать новые процессы?
Дэвид Фёрстер
Также добавьте xdotool keydown [key]выше цикл while и xdotool keyup [key]в оператор if, чтобы удерживать клавишу
Эван Чен
хм, у меня есть свое собственное приложение на Python, которое использует xdotool, но я не использую libxdo .. Довольно легко добавить больше функций к кликеру мыши, но в последнее время я очень занят, поэтому в будущем я сделаю это плохо. github.com/FDJ- Dash / Multitool / blob / master / mouseclicker /…
Фернандо Д Хайме
0

Частичный ответ. Во-первых, вы должны связать свой ключ для запуска кода. ИМХО самый простой способ сделать это с помощью AutoKey, который предоставляет эту функцию вместе со множеством других функций автоматизации клавиатуры.

После этого вы просто напишите очень маленький макрос клавиатуры (в Python), который использует xdotool для выдачи события мыши, а затем перестанете спать на одну секунду, деленную на количество событий, которые вы хотите в секунду. Часть, в которой я не уверен, это обнаружение отпускания ключа, чтобы остановить процесс, но так как макрос написан на Python, почти все должно быть возможно.

Поскольку выполнение кода требует времени и т. Д., Это не будет точно так много в секунду, и вам придется соответствующим образом скорректировать время ожидания. Клики не будут распределяться одинаково по тем же причинам, что и загрузка системы.

Для большинства практических применений такой подход должен быть «достаточно хорошим».

Если это звучит так, как будто это будет работать для вас, то мы могли бы углубиться в реальную реализацию на форуме или вне форума.

Джо
источник