GUI アプリケーションを自動化しながら PC を使い続けるために、xinput を使用してマシン上に 2 つのポインターを作成しました。1 つは私が制御し、もう 1 つは pyautogui で制御します。
私のシステムでは、これは次のように実行されます:
xinput create-master mynewpointer
xinput reattach 10 11
私はマスターポインタ11を使用します。pyautoguiはデフォルトのポインタ2を使用します。
しかし、ポインタはさまざまな方法で互いに競合し、互いの焦点を奪い合うことが大きな問題の 1 つです。
xinput --map-to-output または --set-cp を使用しても機能せず、ポインターが新しいウィンドウにフォーカスを移すと、ポインターはテスト対象のウィンドウ/モニターから「フリック」して戻ります。
これらのポインタを分離する方法はありますか?
答え1
代わりに、アプリケーション専用のX11サーバーを使用することもできます。これは、次のように実行するだけです。
Xnest :1 &
そして、DISPLAY=:1 でアプリケーションを実行します。ただし、実際のカーソルがウィンドウ内にない限りカーソルは表示されず、カーソルをウィンドウ内に移動すると Xnest カーソルも移動します。
もう 1 つの選択肢は、VNC サーバーを起動することです。これはもう少し独立しています。
vncserver :1 securitytypes=none -interface localhost
vncviewer :1
ネストされたサーバーもありますXephyr
。これは Xnest に似ていますが、基盤となるサーバーにはない多くの機能を追加しており、OpenGL のバージョンも存在します。