web-dev-qa-db-ja.com

xdotoolなしでターミナルを介してマウスの動きをシミュレートできますか?

マウスを仮想的に揺すってコンピュータがロックされるのを防ぐスクリプトを書きたいのですが。しかし、使用しているコンピューターにxdotoolがなく、rootでないためインストールできません。 xdotoolを使用せずにカーソルを移動する方法はありますか?

8
ichbinallen

Rootでないためにxdotoolをインストールできないということは、特別な特権を必要としないため、プログラムを実行できないという意味ではありません。

ソースから をダウンロードしてコンパイルするだけです。

コンパイラにアクセスできない場合は、システムのパッケージを直接ダウンロードして、パッケージからファイルを抽出できます(.debの場合は、最初にarを使用し、.rpmから抽出しますrpm2cpioで実行できます)

9
Anthon

this の回答によれば、次の手順でコマンドラインを使用してマウスのポインタを移動できます。

  1. まず、マウス入力デバイスを見つける必要があります

    grep mouse /proc/bus/input/devices | grep event
    

    H: Handlers=mouse0 event7 私の場合。複数のマウス(タッチパッドなど)を使用している場合は、複数の行を出力できます。重要な部分はevent7、それはあなたが/dev/input/event7

  2. 次に、マウスポインタを100ピクセル右に移動します。

    seconds=$(date +%s)
    type=2      # EV_REL
    code=0      # REL_X
    value=100   # 100 pixels
    
    printf '%08X%04X%04X%08X%08X\n' $value $code $type 0 $seconds | xxd -r -p | \
        Perl -0777e 'print scalar reverse <>' > /dev/input/event7
    
    type=0      # EV_SYN
    code=0      # SYN_REPORT
    value=0
    
    printf '%08X%04X%04X%08X%08X\n' $value $code $type 0 $seconds | xxd -r -p | \
        Perl -0777e 'print scalar reverse <>' > /dev/input/event7
    

この手順が、ロックメカニズムを中断するという意味で、実際のマウスの動きと同等であるかどうかはテストしませんでした。

8
jimmij