OpenWrt自定义按键功能

翻译 2017年01月03日 18:41:54

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 button :button的名字
option action :button事件触发的动作
option handler:触发后执行动作
option min ,option max :触发时间段

上面的配置文件将BTN_1 定义成了两种功能按钮:
1、0-4秒内重启;
2、5-10秒内恢复出厂设置


相关文章推荐

openwrt wiki 为按键添加功能--简单方便

其实是从官网上复制下来的,加了一些简单的注释!! 哈哈    和大家分享下,方法很好,用起来很简单!!   准备 The first step is to make Hotplug execute...
  • jk110333
  • jk110333
  • 2013年12月21日 19:20
  • 11546

Openwrt定制按键输入

在OpenWRT中修改一个定制的按键输入需要涉及几个地方的修改: 1. 内核修改,添加需要操作的GPIO端口; 2. 在程序中使用netlink机制借助于socket API,检测按键输入。 3...
  • tietao
  • tietao
  • 2015年05月05日 21:58
  • 5158

openwrt 按键处理

openwrt下button用法 关于openwrt下button的用法在wiki上有详细的说明,以下是其链接:http://wiki.openwrt.org/doc/howto/hardware.b...
  • xumjns
  • xumjns
  • 2015年09月19日 23:57
  • 983

OpenWRT添加物理按键(procd,ar71xx)

openwrt利用空闲gpio及procd添加物理按键,适用于ar71xx平台。

Openwrt /etc/rc.button/reset 保存配置安全脚本

写一个/etc/rc.button/reset脚本来对安全,状态还有配置改变的反馈做相应的处理远程操作按下reset按键,并存储配置,脚本文件:#!/bin/shPATH="$PATH:/usr/lo...

RT5350 openwrt添加Reset按键,实现短按重启系统,长按复位系统

添加Reset按键,实现短按重启系统,长按复位系统 1、查看目前的gpio cat /sys/kernel/debug/gpio GPIOs 0-21, platform/10000600.gpio...
  • nsdcwj
  • nsdcwj
  • 2016年06月12日 16:32
  • 4418

luci界面修改 :一

修改: /usr/lib/lua/luci/controller/admin下的system.lua在function index()中添加语句:entry({"admin", "system", ...

LuCI实现启动应用程序等脚本命令

 正如当初在wordpress插件页面设置时一筹莫展一样,在实现LuCI路由器设置页面中启动或者退出我们的应用程序(我这里是港湾认证程序)确实让我伤透脑筋。若是纯粹的php代码或者html表单对...

一、我来说LuCI: LuCI官方----4. CBI

中文总结: 1. /usr/lib/lua/luci/controller/mymodule.lua module("luci.controller.myapp.mymodule", pa...
  • ccwwff
  • ccwwff
  • 2014年11月04日 19:44
  • 5084

Openwrt中luci配置页面cbi小记

先看看network的配置文件: [html] view plaincopy config interface 'loopback'          option ifnam...
  • LunaW
  • LunaW
  • 2015年12月29日 14:44
  • 1694
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenWrt自定义按键功能
举报原因:
原因补充:

(最多只允许输入30个字)