web-dev-qa-db-ja.com

xdotoolを自動クリッカーとして使用できますか?

xdotoolを使用して、特定のキーを押しながら1秒間に特定の数のマウスクリックを実行する方法はありますか?

5
user276059

これは、xdotoolのbashスクリプトです。キーボードショートカットで設定できます。マウスを動かすと停止します。もちろん、好みに合わせて独自のスクリプトを作成できます。

#!/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
1

部分的な答え。まず、キーをバインドしてコードを実行する必要があります。 IMHOでこれを行う最も簡単な方法は、AutoKeyを使用することです。AutoKeyは、他の多くのキーボードオートメーション機能とともにその機能を提供します。

それを処理したら、xdotoolを使用してマウスイベントを発行し、1秒間に必要なイベント数で割って1秒間スリープする非常に小さなキーボードマクロ(Python)を記述するだけです。不明な部分は、プロセスを停止するためのキーリリースを検出することですが、マクロはPythonで記述されているため、ほとんど何でも可能です。

コードの実行などに時間がかかるため、これは毎秒正確にはそれほど多くなく、それに応じてスリープ時間を調整する必要があります。同じ理由やシステム負荷などの理由で、クリックの間隔が完全に等しくなるわけではありません。

ほとんどの実用的なアプリケーションでは、このようなアプローチは「十分に良い」はずです。

これがあなたにとってうまくいくように思えるなら、フォーラムのオンまたはオフでの実際の実装をより深く知ることができます。

0
Joe