キーボードの余分なキーを押すと何が起こりますか?

キーボードの余分なキーを押すと何が起こりますか?

追加キーのあるキーボードがどのように動作するのか知りたいです。たとえば、次のようなキーボードがあるとします。

ここに画像の説明を入力してください

追加のキーがあるのがわかります。ミュート重要なのは、この場合何が起こるかということです。

私の考えでは、次のようなことが起こるでしょう:

  • 信号がコンピュータに送信されます。
  • キーボード デバイス ドライバーはこの信号を受信します。
  • キーボード デバイス ドライバーは、この信号がミュート信号であることを認識するため、これを OS に渡すのではなく、コンピューターのサウンドをミュートする OS 関数/システム コールを呼び出します。

私の言うことは正しいでしょうか?

答え1

入力レイヤーの簡単な概要:

キーボード デバイスは、USB や PS/2 ポートなど、何らかの方法で PC に接続されています。このメカニズムのカーネル ドライバーは、キーボードのキーが押されたときに通信を処理する方法を知っています。

USBキーボードの場合、隠蔽(ヒューマンインターフェースデバイス)が存在します。これはキーボードだけでなく、マウス、ジョイスティック、その他の入力デバイスにも適用されます。そのため、デバイスにはディスクリプタカーネルにどのようなシグナルを発することができるかを伝え、キーのコードの多くはミュート標準化されています。

ただし、一部のキーボードには標準化されていないキーがあり (Fn一部のキーボードの など)、それらのキーにどのような信号を送るかはメーカー次第です。

カーネルには、HID デバイスを処理するための特別なレイヤーがあります。このレイヤーは、生の HID 通信を で利用できるように/dev/hidrawXし、HID イベントをカーネル入力イベントに変換します。

カーネル入力層はスキャンコード(デバイス固有の物理キーに対応する番号)に変換し、キーコード(すべてのデバイスで標準化された論理キーに対応する番号)。どちらも のイベントとして使用できます。これらのイベントを表示するには を使用し、変換テーブルを表示するには などを/dev/input/eventX使用します。evdevshowkeydumpkeys

Xサーバー(またはWayland)はこれらすべてのイベントを読み取り、キーシンボル( などaáまたは のような特殊なものAudioMute)。X アプリケーションはこのシンボルを受け取り、それに応じて動作します。see xevapplication を使用してこのレイヤーを確認し、の仕様xmodmapとを使用して設定することができます。xkbdxorg.conf

に反応するにはAudioMute、何らかのアプリケーションが必要です。多くの場合、これはウィンドウ マネージャーですが、ウィンドウ マネージャーが対応していない場合は、別のアプリケーションでも動作します。

したがって、単一の「キーボード ドライバー」は存在せず、はるかに複雑であり、「ミュート」を特別に呼び出す必要はありません。

答え2

一般的な理解では、あなたの言う通りです。キーを押すと、キーボードはスキャンコード、つまり各キーを識別する一連の数字を送信します。スキャンコードはキーコードにマッピングされます。各キーコードは、特定のキーが押されたときにプログラムがどのように反応するかを定義する関数に対応します。Xorg とコンソールは異なるキーコード セットを使用することに注意してください。Wayland についてはあまり詳しくありませんが、独自のキーコード セットを使用しているのかもしれません。キーコードはキー シンボルにマッピングされます。キー シンボルを使用すると、開発者はより抽象度の高いレベルでキーボードを操作できます。

showkey --scancodeと をそれぞれ実行すると、コンソール上でスキャンコードとキーコードを確認できますshowkey --keycode。Xorg では、xev後者に を使用する必要があります。

これらの抽象化レベルにより、Linux環境のさまざまな部分に影響を与える柔軟で複雑なマッピングスキームを作成できます。ArchWikiの記事マッピング技術に関する多くの情報が含まれているので、詳細を知りたい場合は読んでみてください。

他にもたくさんあります記事インターネットには、キーボードが低レベルでどのように動作するかを説明する記事がたくさんあります。記事が 1999 年に書かれたか 2010 年に書かれたかは問題ではありません。その頃からキーボードにはあまり変化がありませんが、USB HID デバイスは「従来の」PS/2 キーボードとは異なる動作をすることを覚えておいてください。

関連情報