从Linux用户空间中,如何获得evdev / input_event设备的类型(例如,鼠标或键盘)?
我知道我可以通过阅读/proc/bus/input/handlers
或列出来枚举它们,/sys/class/input/
但是尚不清楚哪个设备是鼠标还是键盘。
/proc/bus/input/handlers
像这样的H: Handlers=sysrq kbd event3 leds
几行似乎暗示这是一个带有'kbd'的键盘,但是我找不到任何具有这种效果的实际文档。
内核并不是真正根据设备类型进行推理,而是根据设备可以产生的事件类型进行推理(请参阅内核中的事件代码文档)。
因此,您需要一些启发式方法来识别设备类型。许多设备可以产生关键事件。键盘具有同时产生按键事件(EV_KEY
)和重复事件(EV_REP
)的特殊性。我认为,老鼠是产生相对事件(EV_REL
)的唯一设备。
设备公开了可以ev
在其类capabilities
目录中的文件中生成的事件类型。每个偶数类型都有给定的位偏移量,定义为/usr/include/linux/input-event-codes.h
;EV_KEY
是EV_REP
1、20、2 EV_REL
。您可以在给定的值中查找那些位,/sys/class/input/input*/capabilities/ev
以找到您感兴趣的设备。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句