web-dev-qa-db-ja.com

特定のキーボードボタンを押したままマウスを自動クリック

移動するオブジェクトを繰り返しクリックする必要があるゲームがあります。これは、個別のマウスボタンのないタッチパッドしかない場合は非常に困難です。

私が欲しいのは、特定のキーボードボタンまたは組み合わせを押したまま、マウスクリック(左ボタン、1秒あたり約5クリック)を繰り返しエミュレートするツール/スクリプトがあることです。 Control (right)+Menu

私は次のようなコマンドで繰り返しクリックをエミュレートできることを知っています

xdotool click --repeat 10 --delay 200 1

しかし、一定のクリック数ではなく、特定のキーボードの組み合わせを押したままクリックする方法はわかりません。

3
Byte Commander

これが私の最初と5回目の試みです。遅延を変更する必要がない場合、最初の方法は適切です。特定のキーの組み合わせにいくつかの問題があるようですが、何が原因かはわかりません。

方法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
Annan