"firefox"コマンドを入力してbashウィンドウでFirefoxを起動し、
ユーザーインターフェイスでFirefoxブラウザを起動しました。
「ps」コマンドを入力してFirefoxプロセスを調べたところ、Firefoxプロセスに制御端末が接続されていて(上のスクリーンショットに示すようにpts12 /)、Firefoxプロセスにも親プロセスとしてbashがあることがわかりました。
Firefoxブラウザウィンドウに直接キーボード入力を提供するにはどうすればよいですか? (ブラウザに「Hello world」と入力しました。)
ttyがプロセスに添付されているので、Firefoxへの入力はターミナルウィンドウを通過する必要がありますか?
私はX-11ということが関係していることを知っていますが、全体像を得ることはできません。
この質問は以下に基づいて質問されましたが、上記のクエリに関する十分な情報を提供していません。 キーボード入力とテキスト出力はどのように機能しますか?
答え1
X11アプリケーションへの入力は、ttyデバイスを介さずにX11イベントとして提供されます。 X11サーバーは入力イベントを受信し、現在どのアプリケーションにフォーカスがあるかを確認し、入力イベントを対応するX11イベントに変換します。
X11 サーバーは、システムのハードウェアの抽象化を提供します。 X11アプリケーションはサーバー上のクライアントとして実行され、サーバーからイベントを受け取ります。リモートでイベントを受け取ることもでき、つまりローカルシステムでX11サーバーを実行し、それを使用して他のシステムで実行されているX11アプリケーションと対話することができます。
xev
で説明されているように実行して、この状況が発生していることを確認できます。キーボード入力とテキスト出力はどのように機能しますか?
答え2
他の回答やコメントで述べたように、ここではより明確に説明しようとしています。
標準入力、標準出力、標準エラーはtty
元々Unixに存在し、今日でも依然として広く使用されている概念ですls
。cat
grep
X11、キーボードフォーカス、ウィンドウ(1980年代のOS以外のプログラムを見る)は別のものです:firefox
、konsole
など。
たとえば、仮想端末は、X11プログラムであり、tty(擬似tty)を提供するなど、連携して動作できます。
2つを別々に学習することから始めましょう。
- stdin、stdout、stderr、パイプ、ファイルリダイレクトなどは何ですか?
- X11、ウィンドウマネージャ、ウィンドウ、キーボードフォーカスなどは何ですか?
- 次に、必要に応じて擬似
tty
-sを使用します。