アプリケーションでX11配信をプログラム的に制御する方法は何ですか?

アプリケーションでX11配信をプログラム的に制御する方法は何ですか?

サーバー上でリモートXアプリケーションを実行し、X11クライアントがUXインタラクションを処理するようにX11転送を設定したいと思います。

しかし、実際にユーザー対話を実行するためにX11クライアントを設定したり、プログラムで(スクリプト内で)偽にしたいと思います。

たとえば、マウスクリックまたはキーボードインタラクション(インストーラなど)が必要なアプリケーションを実行して完了するまで、そのクリックまたはキーボードキーストロークをスクリプトからアプリケーションにプログラムで送信できます。

可能ですか?これを達成する方法や開始位置は何ですか?または、X11プロトコルを再利用/ハイジャックして、ユーザーではなく対話を挿入するにはどうすればよいですか?

答え1

これまで私は見つけましたxdotoolマウスとキーボードの入力を簡単に偽造できるツールです。

単純なキーボードインタラクションのいくつかの例:

xdotool key a
xdotool key Down
xdotool key Tab
xdotool key "Return"
xdotool key "Control_L+t"
xdotool key Alt+1
xdotool key ctrl+v
xdotool key Super
xdotool key KP_Enter
xdotool key ctrl+Page_Up
xdotool key ctrl+U005C
xdotool key ctrl+shift+e
xdotool key --delay 1000  shift+minus # for underscore
xdotool key --clearmodifiers shift+Insert
xdotool key --clearmodifiers --window 0x2600006 alt+1 0 9 8 7 6 5 4 3

マウスの相互作用を含むサンプルスクリプト:

WINDOWID=$(xdotool selectwindow)

xdotool set_window --overrideredirect 1 $WINDOWID windowunmap $WINDOWID windowmap $WINDOWID
xdotool windowsize $WINDOWID 10 100%

# Set behaviors
xdotool behave $WINDOWID mouse-enter windowfocus windowsize --usehints 80 100% &
xdotool behave $WINDOWID mouse-leave windowsize 4 100% &

他の例:F5キーを押すことを最初のChromeウィンドウに送信する方法

より多くのスクリプト例については、次のサイトにアクセスしてください。GitHubまたは公式ウェブサイト

sudo apt-get install xdotoolたとえば、適切なリポジトリからインストールできます。源泉


ワイン

X11 アプリケーションが Wine で実行されている場合は、次を使用することもできます。ワイン製造のヒント。調査するソースファイル(シェルスクリプトです)AutoHotkeyツールを使用してアプリケーションを制御する方法を案内します。

より高度な方法には、winedbgデバッガの使用とプロセス接続が含まれます。

$ winedbg
Wine-dbg>info process
 00000008 3        'terminal.exe'
Wine-dbg>attach 8
0xf7709c0e __kernel_vsyscall+0xe in [vdso].so: int  $0x80

その後、デバッガを使用して直接対話できます(ヘルプの入手をman winedbg参照)。

関連情報