У меня есть игра, которая требует, чтобы я неоднократно нажимал движущийся объект, который является чрезвычайно трудным, если у Вас только есть сенсорная панель без отдельных кнопок мыши.
То, что я хочу, должно иметь инструмент/сценарий, который неоднократно эмулирует щелчок мышью (оставленный кнопку, возможно, приблизительно 5 щелчков в секунду), в то время как определенная кнопка клавиатуры или комбинация удерживаются, например, Управление (справа) +Menu.
Я знаю, что могу эмулировать повторенные щелчки с командой как
xdotool click --repeat 10 --delay 200 1
но я понятия не имею, как заставить его нажать, в то время как определенная комбинация клавиатуры удерживается вместо постоянного числа щелчков.
Вот мои первые и пятые попытки. Первое достойно, если Вы не должны изменять задержку. Это, кажется, имеет некоторые проблемы с определенными сочетаниями клавиш, не уверенными, что вызывало его как бы то ни было.
Метод 1, в ~/.xbindkeysrc
:
keystate_scrolllock = enable
"xdotool click 1"
Scroll_Lock
Метод 5:
keystate_scrolllock = enable
"/home/USER/infinite_clicks.sh event16 KEY_SCROLLLOCK 0.1 &"
Scroll_Lock
С infinite_clicks.sh
быть:
#!/bin/bash
kbd=$1 #"event16"
key=$2 #"KEY_SCROLLLOCK"
delay=$3 #"0.1"
fn=`basename "$0"`
if [ $# -le 1 ]; then
echo "Usage: $fn input_device key_name delay"
echo "Example: $fn event16 KEY_SCROLLLOCK 0.1"
echo "Must run as superuser."
exit 1
fi
# do not start if already started
if [[ $(pidof -o %PPID -x $fn) ]]; then
exit 0
fi
while true; do
# this is why you need to use sudo/superuser
evtest --query /dev/input/$kbd EV_KEY $key
# get evtest return code, if it's 0 the key is up
if [[ "$?" -eq "0" ]]; then
break
fi
xdotool click 1 &
sleep "$delay"
done
exit 0
С этим кодом также необходимо выполнить xbindkeys как sudo xbindkeys -f ~/.xbindkeysrc
Можно найти использование числа события клавиатуры sudo evtest
затем найдите ключевое использование имен sudo evtest /dev/input/eventXXX
использование номера события.
Я использовал ClickItAuto, небольшую программу, которая, как и любое программное обеспечение Java, может выполняться в нескольких ОС