Автонажмите мышь, в то время как определенная кнопка клавиатуры удерживается

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

То, что я хочу, должно иметь инструмент/сценарий, который неоднократно эмулирует щелчок мышью (оставленный кнопку, возможно, приблизительно 5 щелчков в секунду), в то время как определенная кнопка клавиатуры или комбинация удерживаются, например, Управление (справа) +Menu.

Я знаю, что могу эмулировать повторенные щелчки с командой как

xdotool click --repeat 10 --delay 200 1

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

3
задан 5 February 2017 в 14:21

2 ответа

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

Метод 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 использование номера события.

1
ответ дан 1 December 2019 в 17:31

Я использовал ClickItAuto, небольшую программу, которая, как и любое программное обеспечение Java, может выполняться в нескольких ОС

https://github.com/DaGammla/ClickItAuto

0
ответ дан 14 August 2020 в 01:36

Другие вопросы по тегам:

Похожие вопросы: