button按钮底层会产生NETLINK消息,上层通过procd进程的hotplug部分捕捉NETLINK消息
上层hotplug处理主要通过以下脚本实现:
hotplug.json,正常启动后加载此文件进行解释,此文件描述了 消息子内容 - 执行动作,即匹配了什么消息子内容就执行对应的动作
对于button而言会命中执行以下2个描述体:
[ "if",
[ "and",
[ "has", "BUTTON" ],
[ "eq", "SUBSYSTEM", "button" ],
],
[ "exec", "/sbin/rcbutton-call", "%BUTTON%" ] //原始为"/etc/rc.button/%BUTTON%"
],
[ "if",
[ "eq", "SUBSYSTEM",
[ "net", "input", "usb", "usbmisc", "ieee1394", "block", "atm", "zaptel", "tty", "button", "dump", "mhi_uci" ]
],
[ "exec", "/sbin/hotplug-call", "%SUBSYSTEM%" ]
],
/sbin/rcbutton-call脚本会根据%BUTTON%名称调用/etc/rc.button/%BUTTON%脚本
/sbin/hotplug-call脚本会根据%SUBSYSTEM%名称调用/etc/hotplug.d/button/*下的所有脚本
需要注意的是:每一个按键都分别有一个pressed、released消息
OpenWRT button按键通用生效处理机制了解
最新推荐文章于 2025-02-27 20:53:27 发布