杰理SDK入门教程(六):自定义按键事件
杰理AC695N自定义按键事件开发教程
本教程以杰理AC695N芯片(基于soundbox应用)为例,详细介绍如何自定义按键事件,包括枚举定义、按键表配置及消息处理实现的全流程。
一、添加自定义按键枚举
操作步骤
- 打开文件路径:
apps/soundbox/include/key_event_deal.h
- 在文件内
KEY_NULL
枚举值之前添加自定义按键枚举变量(例如KEY_USER_TEST
)
二、配置按键功能表
核心文件
文件路径:apps/soundbox/board/br23/board_ac695x_smartbox/key_table/adkey_table.c
文件说明
该文件包含多个按键功能定义数组(如 bt_key_ad_table[][]
),每个数组对应不同工作模式下的按键行为映射:
- 数组行:对应物理按键序号(例如第0行→按键0,第1行→按键1…)
- 数组列:对应按键操作类型(如单击、双击、长按等,具体列定义需参考文件内注释)
操作示例(以蓝牙模式为例)
- 定位目标数组:找到对应模式的按键表(例如蓝牙模式使用
bt_key_ad_table[][]
) - 修改按键行为:
-
单击行为:将数组中第0行第1列(假设第1列为单击列)的值改为
KEY_USER_TEST
-
双击行为:将数组中第1行第X列(假设X列为双击列)的值改为
KEY_USER_TEST
📌 提示:通过文件内注释确认各列对应的操作类型(如单击/双击/长按),不同模式数组的列结构可能一致,需根据实际注释调整。
三、实现按键消息处理逻辑
核心文件
文件路径:apps/soundbox/task_manager/app_common.c
操作步骤
- 定位函数:找到
int app_common_key_msg_deal(struct sys_event *event)
函数 - 添加
case
分支:在函数内的按键消息处理逻辑中,为KEY_USER_TEST
添加专属处理代码
关键说明
- 兜底处理机制:当各模式独立的按键消息处理函数未匹配到目标按键时,会调用
app_common_key_msg_deal
进行统一处理 - 推荐位置:在该函数的
switch(event->arg)
或类似按键消息分支结构中,添加如下代码片段:
case KEY_USER_TEST:
// TODO: 在此添加自定义按键触发的功能逻辑
// 示例:打印日志 / 控制硬件 / 切换状态等
printf("KEY_USER_TEST triggered!\n");
break;
四、编译下载与测试验证
- 保存所有修改:确保新增枚举、按键表配置及消息处理代码均已正确编写
- 编译固件:使用杰理开发环境(如IDE)编译工程,确认无报错
- 烧录测试:将编译生成的固件下载至AC695N开发板
- 功能验证:操作对应按键(如步骤二中配置的单击/双击),观察是否触发预期功能(如日志打印/硬件响应)