improve custom key tests and docs

This commit is contained in:
lixianjing 2022-10-18 16:06:03 +08:00
parent 553d9febb8
commit 9366679c86
4 changed files with 89 additions and 5 deletions

View File

@ -97,6 +97,7 @@
* [如何启用编辑器的上下文菜单](how_to_enable_edit_context_menu.md)
* [如何设置下拉选择框 (combo box) 弹出窗口/列表项的样式](how_to_set_style_of_combo_box_item.md)
* [如何支持软键盘按钮预览](how_to_enable_keyboard_preview.md)
* [如何设置自定义键值](how_to_set_custom_keys.md)
### 3. 内部原理
* [AWTK 脚本绑定原理](script_binding.md)

View File

@ -0,0 +1,80 @@
# 如何设置自定义键值
在实际的开发中,产品通常会有自身特有的按钮,而这些按钮的键值也不尽相同,为了用户更方便使用,故增加了设置自定义键值的功能。
## 一、设置方法
1. 在应用项目文件夹下的 design\default\data 文件夹没有data文件夹请自行创建增加自定义键值配置文件 custom_keys.json。也可以在项目中的 main.c 定义 CUSTOM_KEYS_FILEPATH 宏指定配置文件的路径和名称,示例如下:
```c
#include "awtk.h"
#include "mvvm_app.inc"
#define GLOBAL_INIT() mvvm_app_init()
#define GLOBAL_EXIT() mvvm_app_deinit()
BEGIN_C_DECLS
#ifdef AWTK_WEB
#include "assets.inc"
#else /*AWTK_WEB*/
#include "../res/assets.inc"
#endif /*AWTK_WEB*/
END_C_DECLS
extern ret_t application_init(void);
extern ret_t application_exit(void);
#define APP_LCD_ORIENTATION LCD_ORIENTATION_0
#define CUSTOM_KEYS_FILEPATH "file://D:/custom_keys.json" /* 自定义键值配置文件路径 */
#include "awtk_main.inc"
```
2. 编辑自定义键值配置文件,如以下示例:
```json
{
"ENABLE" : {
"value" : 248
},
"START" : {
"value" : 31
},
"STOP" : {
"value" : 8
}
}
```
第一个键值对的键名为 ENABLE键值为248后面的键值对同理不再赘述。
3. 打包资源。
执行以上步骤后,自定义键值就设置完成了。
## 二、简单使用示例
在 MVVM 工程中,实现点击 CLOSE 按钮关闭 home_page 窗口。
1. 使用 AWTK Designer 新建 MVVM 工程。
2. 根据上文步骤编写自定义键值配置文件:
```json
{
"CLOSE" : {
"value" : 4
}
}
```
3. 绑定命令,实现点击 CLOSE 按钮关闭 home_page 窗口。
```xml
<window v-model="home_page_view_model" name="home_page" v-on:key_down:CLOSE="{nothing, CloseWindow=true}"/>>
```
4. 打包资源,编译运行。
关于 MVVM 命令参数的更多资料请参阅[ AWTK-MVVM 命令绑定 ](https://github.com/zlgopen/awtk-mvvm/blob/master/docs/11.command_binding.md)。

View File

@ -53,6 +53,7 @@
* [如何更新拼音输入法数据](how_to_update_gpinyin_data.md)
* [如何集成第三方库](https://github.com/zlgopen/awtk-hello/blob/master/docs/how_to_integrate_3rd_libs.md)
* [如何使用 stb 外部硬件 YUV 转 RGB](docs/how_to_use_stb_hyuv_to_rgb.md)
* [如何设置自定义键值](docs/how_to_set_custom_keys.md)
### 3. 内部原理
* [AWTK 脚本绑定原理](script_binding.md)

View File

@ -31,10 +31,12 @@ TEST(Enums, custom_keys) {
ASSERT_EQ(keys_type_find("CUSTOM1") == NULL, TRUE);
}
TEST(Enums, custom_keys_load) {
uint32_t nr = 0;
key_type_value_t* custom_keys = keys_type_custom_keys_load(&nr);
ASSERT_EQ(custom_keys != NULL || nr == 0, TRUE);
TEST(Enums, custom_keys_init) {
ASSERT_EQ(custom_keys() == NULL && custom_keys_nr() == 0, TRUE);
keys_type_custom_keys_unload(custom_keys, nr);
custom_keys_init(TRUE);
ASSERT_EQ(custom_keys() != NULL || custom_keys_nr() == 0, TRUE);
custom_keys_deinit(TRUE);
ASSERT_EQ(custom_keys() == NULL && custom_keys_nr() == 0, TRUE);
}