Linux evdev 子系统与 libusb

Linux evdev 子系统与 libusb

evdev与使用访问输入设备相比,使用子系统有哪些优点和缺点libusb

evdev 的内核文档状态:

这是用户空间使用用户输入的首选接口,鼓励所有客户端使用它。

这是强有力的语言。从 python (例如)我可以使用以下命令访问 HID 设备https://github.com/gvalkov/python-evdev或者https://github.com/trezor/cython-hidapi。这些似乎都达到了相同的目标。使用libusb会增加延迟吗?

libusb 如何访问内核内容?好像没有提到evdev。是否libusb使用libevdev或类似的子系统?

答案1

Evdev 抽象了输入设备。

仅当您想为特定 USB 输入设备编写用户态驱动程序时,Libusb 才有用。 Libusb 只是为您提供对 USB 的原始访问。它不知道什么是 hid。它不识别鼠标、键盘或触摸屏。 libusb 用途的一个典型示例是打印机驱动程序,它与输入设备甚至 Linux 无关 - 您可以为 Linux、OpenBSD 和 OS X 编译完全相同的打印机驱动程序。

除非你想在用户态编写USB设备驱动程序,否则libusb不是你想要的。

很难比较 evdev 和 libusb,因为它们的用途完全不同;实际上,evdev 是 Linux 的输入设备抽象层,它知道并理解输入,但不关心 USB,而 libusb 只是一个知道 Linux 的 USB 用户层接口的库,不关心或了解其输入设备子系统。

我不清楚你想要什么,但如果它处理输入设备,那么你需要 evdev,即使不是在其之上构建的库,例如 libinput 甚至是随 GUI 工具包提供的更高级别的抽象。

相关内容