procd buttons
通过procd处理的button,可以通过 /etc/rc.button/* 的脚本实现自定义功能
Hotplug Buttons
注意:在r37132中引入procd后,hotplug2已经从默认包中移除了,但是在r37336:procd:使hotplug button 有效。
Preliminary steps
第一步:获取当前按钮的名字,运行下面的命令
#mkdir -p /etc/hotplug.d/button
创建/etc/hotplug.d/button/buttons文件,并输入一下内容
#vim buttons
#!/bin/sh
logger the button was $BUTTON and the action was $ACTION
现在按动按钮,然后在终端输入logread:
Jan 1 00:01:15 OpenWrt user.notice root: BTN_1
Jan 1 00:01:15 OpenWrt user.notice root: pressed
Jan 1 00:01:16 OpenWrt user.notice root: BTN_1
Jan 1 00:01:16 OpenWrt user.notice root: released
则刚才所按动的按钮为BTN_1
第二步:编写00-button
在/etc/hotplug.d/button/下面创建00-button文件,并输入下面的内容:
#!/bin/sh
. /lib/functions.sh
do_button () {
local button
local action
local handler
local min
local max
config_get button $1 button
config_get action $1 action
config_get handler $1 handler
config_get min $1 min
config_get max $1 max
[ "$ACTION" = "$action" -a "$BUTTON" = "$button" -a -n "$handler" ] && {
[ -z "$min" -o -z "$max" ] && eval $handler
[ -n "$min" -a -n "$max" ] && {
[ $min -le $SEEN -a $max -ge $SEEN ] && eval $handler
}
}
}
config_load button
config_foreach do_button button
注意两点:1、查看functions.sh做在的目录,不是在lib下面就是在etc下面;2、config_load button ,其中的button是/etc/config/下的button配置的文件名;
第三步:添加uci配置文件button:
在/etc/config/下创建button文件,添加一下内容:
config button reboot
option button 'BTN_1'
option action 'released'
option handler 'echo "reboot" > /dev/console;sync;reboot'
option min '0'
option max '4'
config button factory_reset
option button 'BTN_1'
option action 'released'
option handler 'echo "factory reset" > /dev/console;jffs2reset -y && reboot &'
option min '5'
option max '10'
option action :button事件触发的动作
option handler:触发后执行动作
option min ,option max :触发时间段
上面的配置文件将BTN_1 定义成了两种功能按钮:
1、0-4秒内重启;
2、5-10秒内恢复出厂设置