2つを別々に学習することから始めましょう。

2つを別々に学習することから始めましょう。

"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に存在し、今日でも依然として広く使用されている概念ですlscat grep

X11、キーボードフォーカス、ウィンドウ(1980年代のOS以外のプログラムを見る)は別のものです:firefoxkonsoleなど。

たとえば、仮想端末は、X11プログラムであり、tty(擬似tty)を提供するなど、連携して動作できます。

2つを別々に学習することから始めましょう。

  • stdin、stdout、stderr、パイプ、ファイルリダイレクトなどは何ですか?
  • X11、ウィンドウマネージャ、ウィンドウ、キーボードフォーカスなどは何ですか?
  • 次に、必要に応じて擬似tty-sを使用します。

関連情報