/ dev / input / eventX和/ dev / input / jsX有什么区别?

Arjonais

当我在Linux内核v5.14上连接游戏手柄时,会显示两个新设备:

/dev/input/event23
/dev/input/js1

如果我cat <file> | xxd两个设备文件都提供游戏手柄事件信息。但是event23比冗长得多js1

另外,在上evtest给出错误Invalid Argumentjs1在上可以正常工作event23当我同时使用两个设备文件libevdev时,也会发生同样的情况。

看起来像每个事件一样,js1转储input_eventstruct的内容(在中定义linux/input.h

设备文件之间有什么区别?为什么它们具有不同的信息,并且还能event23提供更多信息js1

非调试

/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游戏手柄来说尤其常见,因为Home和Back按钮具有非Button用法。这些按钮不会被选中joydev

另一个很大的区别:joydev纯粹是为了输入。evdev支持游戏手柄隆隆声并强制反馈效果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章