X11アプリケーションにリモートでキーストロークを送信する方法は?

X11アプリケーションにリモートでキーストロークを送信する方法は?

私は保存されていないデータを含むX11プログラム(Mathematica / Linux)を実行しています。残念ながら、私が戻ってくる前に電源が切れるという内容の電子メールを受け取りました。だから私はデータを保存し、右側のウィンドウにCtrl-を送信したいと思いますS(ウィンドウIDを見つける方法を知っています)。残念ながら、xdotoolやautokeyはインストールされておらず、インストールのためのrootアクセス権もありません。それでは、できる方法はありますか?

もちろん、1つの方法はこれを実行するためのCプログラムを書くことです(機能がそこにある必要があり、そうでなければ他のプログラムが機能しないからです)。しかし、私はX11について何も書いたことがないので、そうは思いません。時間が経つとできます。

私はマシンへのSSHアクセス権を持ち、ディスプレイにアクセスできます(スクリーンショットを撮ることができます - ロック画面が表示されます - xwininfoを使用してウィンドウのリストを取得できます)。だから私に必要なのは、事前に何かをインストールせずに特定のウィンドウにCtrlシングルを送信する方法です。S

ベストアンサー1

この問題を解決しました。

ソリューションの最初の部分はGillesが提供する情報です。 xdotoolはバイナリなので、インストールする必要はありません。実行可能ファイルをリモートシステム(マイディレクトリに保存されている実行可能ファイルを実行する権限がある場所)にコピーするだけで十分です。

以下のコマンドを参照すると、変数はDISPLAYMathematicaが実行中のディスプレイに設定されていると仮定します(私の場合は:0.0)。これは、マイコンピュータにSSHで接続してから、次のコマンドを実行する前に最初に行うことです。

次のステップは、画面がロックされているときにGnomeスクリーンセーバーがキーボードイベントをキャプチャするので、Mathematicaウィンドウに送信されたすべてのキーストロークが最終的にスクリーンセーバーに到達することを認識することです。幸いなことに、Gnomeスクリーンセーバーはコマンドラインから簡単にロック解除できます。コマンドは

gnome-screensaver-command -d

見つけました。ここで。

その後、次のコマンドを使用してMathematicaウィンドウを識別しました。

xwininfo -root -tree | grep Mathematica

見つけました。ここで。正しいMathematicaウィンドウはノートブックファイル名のタイトルに含まれているため、簡単に識別できます(「ノートブック」は特定の種類のMathematicaドキュメントのMathematica名として一般的に計算に使用されます)。保存されていません。各行は対応するウィンドウID(0x13371dなどの16進数)で始まります。

ウィンドウを確認して使用します。

xdotool windowactivate 0x13371d

(ここでは16進数はもちろん、以前に取得したウィンドウIDです。)最後にControl-Sを使用して送信します。

xdotool key ctrl+s

その後、xwininfoを再利用して、ウィンドウタイトルのアスタリスクが実際に消えたことを確認しました。これは、ノートブックが実際に保存されたことを示します。

おすすめ記事