evdev
アクセス入力デバイスを使用する場合と比較してサブシステムを使用することの利点と欠点は何ですかlibusb
?
これevdevのカーネルドキュメント状態:
これは、ユーザースペースがユーザー入力と連携するのに好ましいインターフェースであり、すべてのクライアントがそれを使用することをお勧めします。
これは強力な言語です。たとえば、Python では次を使用して HID デバイスにアクセスできます。https://github.com/gvalkov/python-evdevまたはhttps://github.com/trezor/cython-hidapi。これらはすべて同じ目標を達成するようです。これを使用するとlibusb
待ち時間が長くなりますか?
libusbはカーネルコンテンツにどのようにアクセスしますか?言及されていないようですevdev
。または同様のサブシステムをlibusb
使用しますか?libevdev
答え1
Evdevは入力デバイスを抽象化します。
Libusb は、特定の USB 入力デバイス用のユーザー空間ドライバーを作成する場合にのみ便利です。 LibusbはUSBへのrawアクセスを提供します。何が隠されているのかわかりません。マウス、キーボード、タッチスクリーンを認識しません。 libusbを使用する一般的な例は、入力デバイスまたはLinuxとは独立したプリンタドライバです。 Linux、OpenBSD、およびOS X用に同じプリンタドライバをコンパイルできます。
ユーザーモードでUSBデバイスドライバを作成したくない限り、libusbは望むものではありません。
evdevとlibusbはまったく異なる目的で使用されるため、比較するのは難しいです。実際、evdevはLinuxの入力デバイス抽象化層であり、入力を知って理解していますが、USBについては気にしませんが、libusbはUSBについて知っているライブラリです。 Linux の USB ユーザーレベルのインターフェイスは、入力デバイスサブシステムに関心がないか理解していません。
何が必要なのかはわかりませんが、入力デバイスを処理する場合は、libinputやGUIツールキットに付属するより高いレベルの抽象化など、その上に構築されたライブラリでなくてもevdevが必要です。