Linuxでマウスを使用する実際のプログラムを作成している場合、Xアプリケーションを作成している可能性が高く、その場合はXサーバーにマウスイベントを要求する必要があります。 Qt、GTK、およびlibsdlは、マウス、キーボード、グラフィックス、タイマー、およびGUIプログラムの作成に必要なその他の機能にアクセスするための機能を提供する一般的なCライブラリです。 Ncursesは、ターミナルアプリケーション用の同様のライブラリです。
しかし、システムを調査している場合、または何らかの理由でXを使用できない場合は、カーネルインターフェイスでの動作を以下に示します。
UNIX哲学の中心的な考え方は、「すべてがファイルである」ということです。より具体的には、ファイルを操作するために使用するものと同じシステムコールを介して、できるだけ多くのものにアクセスできる必要があります。そのため、マウスへのカーネルインターフェイスはデバイスファイルです。あなたopen()
は、必要に応じてpoll()
またはselect()
を呼び出して、着信データがあるかどうかを確認しread()
、データを読み取ります。
USB以前の時代では、特定のデバイスファイルは多くの場合、シリアルポート/dev/ttyS0
、またはPS / 2ポートなど/dev/psaux
でした。マウスに組み込まれたハードウェアプロトコルを使用してマウスと話しました。/dev/input/*
サブシステムは、多くの異なる入力デバイスを処理する、デバイスに依存しない統一された方法を提供するため、最近では好まれています。特に、/dev/input/mice
システムに接続された任意のマウスから/dev/input/mouseN
イベントを提供し、特定のマウスからイベントを提供します。最新のLinuxディストリビューションのほとんどでは、これらのファイルはマウスを接続すると動的に作成されます。
マウスデバイスファイルの読み取りまたは書き込みに関する正確な情報については、カーネルのドキュメントのinput / input.txtから始めることができます。特にセクション3.2.2(mousedev)と3.2.4(evdev)、およびセクション4と5をご覧ください。