Arj*_*ais 1 linux input joystick gamepad evdev
当我在 Linux 内核 v5.14 上连接游戏手柄时,会显示两个新设备:
/dev/input/event23
/dev/input/js1
Run Code Online (Sandbox Code Playgroud)
如果我cat <file> | xxd两个设备文件都提供游戏手柄事件信息。但event23比 更加冗长js1。
另外,在 上evtest给出错误,但在 上工作正常。当我使用 libevdev 两个设备文件时,也会发生同样的情况。Invalid Argumentjs1event23
看起来每个事件都会js1转储结构的内容input_event(在 中定义linux/input.h)
设备文件之间有什么区别?为什么他们有不同的信息以及event23提供了哪些更多信息js1?
小智 5
/dev/input/js*设备由旧版操纵杆驱动程序创建joydev。它仅支持操纵杆和类似操纵杆的设备。
https://www.kernel.org/doc/html/latest/input/joydev/joystick.html
/dev/input/event*设备由输入事件接口创建evdev。它支持所有类型的输入设备,而不仅仅是操纵杆。
https://linux.die.net/man/4/evdev
该joydev界面公开了通过 公开的信息的子集evdev,具体来说,它只会公开看起来像操纵杆按钮或轴的输入。新的应用程序应该更喜欢使用evdev,但joydev通常仍然可用。
“看起来像操纵杆按钮或轴”启发式有时可能会成为问题joydev。连接 HID 游戏手柄时,evdev使用joydev设备的 HID 报告描述符中的信息来检测按钮和轴输入的数量。joydev仅考虑 HID 按钮使用页面中的按钮,但较新的游戏手柄有时会定义具有不同用途的特殊按钮。这对于 Android 游戏手柄尤其常见,因为它的“主页”和“后退”按钮具有非按钮用途。这些按钮不会被 选取joydev。
另一个很大的区别:joydev纯粹是为了输入。evdev支持游戏手柄隆隆声和力反馈效果。
| 归档时间: |
|
| 查看次数: |
2686 次 |
| 最近记录: |