キーボードのキーを押すと、さまざまなオペレーティングシステムでさまざまな種類の文字が生成されます。たとえば、Windowsで上矢印を押すと、Linuxで同じキーを押すのとは異なる文字シーケンスが生成されます。
オペレーティングシステムのどの「部分」が担当していますか?特にGNU / Linuxオペレーティングシステムを見てみると、「Linux」は単なるカーネルであるからです。
答え1
これには多くのレイヤーが含まれており、結果は状況によって大きく異なります。しかし、いくつかの一般的な情報は次のとおりです。
まずカーネルです。実際のキーボードハードウェアを処理し、特定のキー(通常何か)を明示的に表現するいくつかのメカニズム(通常下部の割り込みハンドラ)を介してキーを登録することを担当します。
第二に、消費者です。 Linuxでは、基本的に2つのオプションがあります。キーボードキーをTTYサブシステムに入力し、それをターミナルデバイスの受信バイトに変換するか(VTを使用している場合)、Xorgに入力して渡されたメソッドを介して渡します。アプリケーション:Xプロトコル(GUIを使用している場合)前者はまだよくサポートされていますが、今日では後者は標準です。 XorgとXorgに意味を与えるのは責任です。これには通常バイトが生成されますa
が、A
Shiftキーを押しているときに「A」と表示されているキーなどの基本的でほぼ一般的な項目も含まれます。言うまでもなく、ほとんどの作業を実行するライブラリが多く、新しいアプリケーションは通常これを気にする必要はありません。ただし、これはまだアプリケーションレベルで実行される操作です。
タスクはアプリケーションレベルで実行されるため、追加の処理はほぼ完全にアプリケーションに依存します。ターミナルエミュレータプログラムはXプロトコルキーストロークを受け入れ、TTYサブシステムによる処理を複製してそれを1行のバイトに変換し、ユーザーがシェルにアクセスできるようにします。汎用 GUI プログラムは、1 種類または別の種類のツールキットを使用し、これらのツールキットはすべて、キーボード処理を基本機能として提供し、テキストボックス、選択した要素などの共通の意味を有効にします。より大きく複雑なプログラム(ブラウザやフルスクリーンゲームなど)は、柔軟性を高めるためにXレベルで独自のキーボード処理を実行できます。ただし、これはすべて単一のアプリケーションで実行され、完全にアプリケーションの決定によって異なります。