洛达应用层开发教程系列10-按键配置1
洛达应用层开发教程系列10-按键配置1
支持的按键方式
- 单击(short)
- 双击(double)
- 三击(triple)
- 长按(press1,press2,press3)
- 长按释放(press release1,press release2,press release3)
- 单击长按(slong)
- 双击长按(dlong)
- 单击长按释放(slong release)
- 双击长按释放(dlong release)
基本上我们常用的就是单击,双击,三击,长按,其他的基本用的少,看自己需要
配置
-
文件
按键的配置在customersized_key_config.c中,根据自己的工程选择自己的需要的配置文件即可,因为不同的工程都有自己相应的配置文件,注意不要选错了,不然是没有效果的
-
配置表
通过创建数组的方式,创建按键的配置表,数组的每个成员代表一种触发的方式以及动作。配置表的创建方式有两种:
-
default_configurable_table和left_configurable_table
默认的配置表,当有按键动作之后,会先匹配这两个配置表,如果没有,则再去匹配下面的两个配置表。
每个成员通过结构体apps_config_configurable_table_t定义。
typedef struct { uint8_t key_event; /* Means how to pressed the key, refer to apps_config_serialized_event_t. */ uint8_t key_id; /* Means which key, refer to hal_keypad_table.h */ uint16_t app_key_event; /* The output action of the mapping table, refer to apps_config_key_action_t. */ uint32_t supported_states; /* MMI states. Every bit represent a state, refer to apps_config_state_t. */ } __attribute__((__packed__)) apps_config_configurable_table_t;- key_event:也就是此时单击,双击,三击还是长按等。
- key_id:哪个按键此时按下,比如是电源键或者其他按键等
- app_key_event:此时触发的事件,如果播放,暂停,接听,拒接等等。
- supported_states:此时耳机的状态,用来限制只有耳机在现在的状态,才能执行具体的触发事件,否则不触发
-
s_map_list和s_left_map_list
相当于是备用配置表,默认配置表没有匹配到,就到这里来配置每个个成员通过结构体apps_config_key_event_map_list_t定义
typedef struct { uint32_t map_size; /* Size of the mapping table item. */ const apps_config_key_event_map_t *key_map; /* Pointer to the mapping table item. */ } apps_config_key_event_map_list_t;这里重点看结构体apps_config_key_event_map_t
typedef struct { uint8_t key_id; /* Means which key, refer to hal_keypad_table.h */ uint16_t app_key_event; /* The output action of the mapping table, refer to apps_config_key_action_t. */ uint32_t supported_states; /* MMI states. Every bit represent a state, refer to apps_config_state_t. */ } __attribute__((__packed__)) apps_config_key_event_map_t;其实和上面的类似,唯一就是少了key_event,而每一个apps_config_key_event_map_list_t这个结构体就类似于key_event,所以因为如此,我们使用这两个配置表的时候,一定要注意顺序,否则就会导致匹配错误的情况
-
添加自己的按键配置
- default_configurable_table和left_configurable_table
// 左右配置表类似,根据实际的按键操作进行配置 const static apps_config_configurable_table_t default_configurable_table[] = { { APPS_CONFIG_KEY_SHORT_CLICK, EINT_KEY_2, KEY_AVRCP_PAUSE, (1 << APP_A2DP_PLAYING) }, { APPS_CONFIG_KEY_SHORT_CLICK, EINT_KEY_2, KEY_AVRCP_PLAY, (1 << APP_CONNECTED) }, ... } - s_map_list和s_left_map_list
// 左右配置表类似,根据实际的按键操作进行配置 const static apps_config_key_event_map_list_t const s_map_list[APPS_CONFIG_KEY_INVALID] = { { sizeof(temp_key_release_configs) / sizeof(apps_config_key_event_map_t), temp_key_release_configs }, { sizeof(temp_key_short_click_configs) / sizeof(apps_config_key_event_map_t), temp_key_short_click_configs }, ... } const apps_config_key_event_map_t temp_key_short_click_configs[] = { { EINT_KEY_2, KEY_AVRCP_PAUSE, (1 << APP_A2DP_PLAYING) }, { EINT_KEY_2, KEY_AVRCP_PLAY, (1 << APP_CONNECTED) }, ... }
总结
通过上面的配置我们就可以使用我们自己的按键配置了。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 活着死去
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

