疑似端末が/dev/pts/{number}
Xセッションでキーストロークを推論するのはなぜですか/dev/input/by-id/{keyboard-device-name}
?
私は疑似端末がXセッションの上で実行されることを知っています。
疑似端末がUI端末ビューに表示されるデータを読み書きするための別々のファイルの場所を持つのに十分な理由は何ですか?
カーネルは、疑似端末と他のアプリケーションの違いをどのように認識し、2つの異なるファイルの場所に記録しますか?
答え1
疑似端末がUI端末ビューに表示されるデータを読み書きするための別々のファイルの場所を持つのに十分な理由は何ですか?
デスクトップには、ユーザー入力に対して基本的に異なる2つのビューがあるためです。
ディスプレイサーバー(X11またはWaylandコンポジター)の処理みんなハードウェアからの入力は通過します/dev/input/...
(libinput
少なくとも使用される場合)。 X11およびWaylandクライアントは、対応するプロトコルを介して対応するイベントを受信します。
X11およびWaylandクライアントではありませんが、入力を受け取る必要があるプログラムは、何らかの形の偽装を使用して実行されます。端末エミュレータは、名前が示すようにエミュレートされます。ターミナル、これに関して支援を受けた。擬似端末機器が含まれています/dev/pts/...
。
したがって、ターミナルエミュレータでプログラムを実行すると、キーストロークは次のパスに従います。
キーボード→カーネル→ディスプレイサーバー→ターミナルエミュレータ(詳細イベントへ)→擬似ターミナル→プログラム
これは、最終プログラムに入力(および出力)が端末に接続された状態で実行されているという錯覚を与えます。
カーネルは、疑似端末と他のアプリケーションの違いをどのように認識し、2つの異なるファイルの場所に記録しますか?
アプリケーションとアプリケーションが入力を受け取る場所を知りません。これはキーボードを認識し、入力デバイスを介してイベントを提供します。また、疑似端末を認識し、制御プログラムがイベントを送信できるようにします。