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 工具包提供的更高级别的抽象。