Dave Butler Asked: 2019-06-06 09:40:11 +0800 CST2019-06-06 09:40:11 +0800 CST 2019-06-06 09:40:11 +0800 CST 获取 evdev 设备的类型 772 从 Linux 用户空间,我如何获取 evdev/input_event 设备的类型(即鼠标或键盘)? 我知道我可以通过阅读/proc/bus/input/handlers或列出来枚举它们,/sys/class/input/但不清楚哪些设备是鼠标或键盘。 /proc/bus/input/handlerslike中的行H: Handlers=sysrq kbd event3 leds似乎表明这是一个存在“kbd”的键盘,但我找不到任何实际的文档。 linux input 1 个回答 Voted Best Answer Stephen Kitt 2019-06-07T06:35:14+08:002019-06-07T06:35:14+08:00 内核并没有真正根据设备类型进行推理,而是更多地根据设备可以产生的事件类型进行推理(请参阅内核中的事件代码文档)。 因此,您需要一些启发式方法来识别设备类型。许多设备可以产生关键事件;键盘具有产生键事件 ( EV_KEY) 和重复事件 ( EV_REP) 的特殊性。我认为,老鼠是唯一产生相关事件的设备(EV_REL)。 ev设备公开可以在其类capabilities目录中的文件中生成的事件类型。每个偶数类型都有一个给定的位偏移量,定义在/usr/include/linux/input-event-codes.h; EV_KEY是EV_REP1、20、2 EV_REL。您可以在 给出的值中查找这些位/sys/class/input/input*/capabilities/ev以找到您感兴趣的设备。
内核并没有真正根据设备类型进行推理,而是更多地根据设备可以产生的事件类型进行推理(请参阅内核中的事件代码文档)。
因此,您需要一些启发式方法来识别设备类型。许多设备可以产生关键事件;键盘具有产生键事件 (
EV_KEY
) 和重复事件 (EV_REP
) 的特殊性。我认为,老鼠是唯一产生相关事件的设备(EV_REL
)。ev
设备公开可以在其类capabilities
目录中的文件中生成的事件类型。每个偶数类型都有一个给定的位偏移量,定义在/usr/include/linux/input-event-codes.h
;EV_KEY
是EV_REP
1、20、2EV_REL
。您可以在 给出的值中查找这些位/sys/class/input/input*/capabilities/ev
以找到您感兴趣的设备。