Linux 入力サブシステムは、キーボード、マウス、タッチ スクリーン、タブレット、ゲーム コントローラーなど、Linux システム上のすべての入力デバイスをサポートするドライバーのセットです。入力サブシステムの中核は入力モジュールであり、2 種類のモジュール間でイベントを受け渡す役割を果たします。
ドライバー層
基礎となるハードウェア入力を統一イベント形式に変換し、それを入力コアに報告します。
入力サブシステムコア層
input_register_device などの入力デバイスの登録および操作インターフェイスをドライバー層に提供し、イベントを処理するようにイベント処理層に通知し、対応するデバイス情報を /Proc の下に生成します。
イベント処理層
主にユーザー空間と対話します (Linux では、すべてのデバイスはユーザー空間のファイルとして扱われます。これは、fops インターフェイスが一般的なドライバーで提供され、対応するデバイス ファイル ノードが /dev の下に生成されるためです。これらの操作は、入力サブシステムのイベント処理層)。
デバイスの説明
input_dev 構造体は、キーの押下、タッチ スクリーン、その他の入力イベント (input_event 構造体で記述されるイベント) をシステムに報告するという、デバイス ドライバーの中心的な作業を実装するためのものであり、ファイル操作を気にする必要はなくなりました。インターフェース。ドライバーは、inputCore および Eventhandler を通じてユーザー空間にイベントを報告します。
入力デバイス機能の登録: リーリー
入力デバイス機能の登録解除: リーリー
ドライバー実装 - 初期化 (イベント サポート) set_bit() は、どのイベントとどのキーがサポートされているかを入力サブシステムに伝えます。例えば:### リーリー struct input_dev**** には 2 つのメンバーがあります:
**1)** evbit イベント タイプ (EV_RST、EV_REL、EV_MSC、EV_KEY、EV_ABS、EV_REP などを含む)。
**2)**keybit キー タイプ (イベント タイプが EV_KEY の場合、BTN_LEFT、BTN_0、BTN_1、BTN_MIDDLE などを含む)。
ドライバー実装 - イベントのレポート EV_KEY、EV_REL、EV_ABS イベントのレポートに使用される関数は次のとおりです。
リーリー
リーリー
解析例(キー割り込みプログラム):
リーリー 概要:
inputサブシステムはまだキャラクター デバイス ドライバーですが、コードの量は大幅に削減されています。****input サブシステムは 2 つのタスクを完了するだけで済みます。初期化とイベント レポート (これは linux**** の割り込みによって実現されます)。 ######例###### リーリー この記事では、Linux 入力サブシステムの基本概念と構造、および一般的に使用されるいくつかのコマンドとツールについて学びました。入力デバイスのプロパティとステータスを表示および制御する方法、および evtest ツールと libinput ツールを使用して入力デバイスをテストおよびデバッグする方法を学習しました。また、udev ルールを使用して入力デバイスの動作と構成をカスタマイズする方法も学びました。
Linux 入力サブシステムは、入力デバイスをより適切に管理および使用できるようにする強力で柔軟なフレームワークです。 Linux 入力サブシステムを使用すると、生産性とユーザー エクスペリエンスを向上させることができます。 Linux システムを使用する場合は、Linux 入力サブシステムを頻繁に使用して入力デバイスを最適化することをお勧めします。以上がLinux 入力サブシステムの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。