一. LVGL GUI键盘控件的概念

Keyboard 对象是一个特殊的 Button 矩阵,具有预定义的按键映射和其他功能,以实现虚拟键盘来编写文本。

二. LVGL GUI键盘小部件和样式

类似于按钮 矩阵,键盘包括 2 部分:

  • LV_KEYBOARD_PART_BG  这是主要部分,并使用了所有典型的背景属性
  • LV_KEYBOARD_PART_BTN 这是按钮的虚拟部分。它还使用所有典型的背景属性和文本属性。

三. LVGL GUI键盘控件的使用

1. 模式(Modes)

键盘有如下模式:

  • LV_KEYBOARD_MODE_TEXT_LOWER - Display lower case letters

  • LV_KEYBOARD_MODE_TEXT_UPPER - Display upper case letters

  • LV_KEYBOARD_MODE_TEXT_SPECIAL - Display special characters

  • LV_KEYBOARD_MODE_NUM - Display numbers, +/- sign, and decimal dot.

我们来看下每个的差别!

代码如下:

void lvgl_keyboard_mode_test(void)
{lv_obj_t* keyboard1 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard1,600,140);lv_obj_set_pos(keyboard1,0,0);lv_keyboard_set_mode(keyboard1, LV_KEYBOARD_MODE_TEXT_LOWER);lv_obj_t* keyboard2 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard2, 600, 140);lv_obj_set_pos(keyboard2, 0, 150);lv_keyboard_set_mode(keyboard2, LV_KEYBOARD_MODE_TEXT_UPPER);lv_obj_t* keyboard3 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard3, 600, 140);lv_obj_set_pos(keyboard3, 0, 300);lv_keyboard_set_mode(keyboard3, LV_KEYBOARD_MODE_SPECIAL);lv_obj_t* keyboard4 = lv_keyboard_create(lv_scr_act(), NULL);lv_obj_set_size(keyboard4, 600, 140);lv_obj_set_pos(keyboard4, 0, 450);lv_keyboard_set_mode(keyboard4, LV_KEYBOARD_MODE_NUM);
}

2. 分配文本区域(Assign Text area)

用这个函数分配文本区域lv_keyboard_set_textarea(kb, ta)

3. 新按键图(New Keymap)

您可以使用和为键盘指定新的地图(布局)。了解有关 Button 矩阵对象的更多信息。请记住,使用以下关键字将具有与原始地图相同的效果:
lv_keyboard_set_map(kb, map)lv_keyboard_set_ctrl_map(kb, ctrl_map)

  • LV_SYMBOL_OK-申请。
  • LV_SYMBOL_CLOSE-关闭。
  • LV_SYMBOL_BACKSPACE-左侧删除。
  • LV_SYMBOL_LEFT-向左移动光标。
  • LV_SYMBOL_RIGHT-向右移动光标。
  • "ABC" -加载大写地图。
  • "abc" -加载小写字母映射。
  • "输入" -新行。

4. 事件(Event)

  • LV_EVENT_VALUE_CHANGED-按下/释放按钮时或在长按后重复时发送。事件数据设置为按下/释放按钮的 ID。
  • LV_EVENT_APPLY -确定按钮被点击。
  • LV_EVENT_CANCEL -关闭按钮被点击。

我们来一个官方的综合例子:

static lv_obj_t* kb;
static lv_obj_t* ta;
static void kb_event_cb(lv_obj_t* keyboard, lv_event_t e)
{lv_keyboard_def_event_cb(kb, e);if (e == LV_EVENT_CANCEL) {lv_keyboard_set_textarea(kb, NULL);lv_obj_del(kb);kb = NULL;}
}static void kb_create(void)
{kb = lv_keyboard_create(lv_scr_act(), NULL);lv_keyboard_set_cursor_manage(kb, true);lv_obj_set_event_cb(kb, kb_event_cb);lv_keyboard_set_textarea(kb, ta);}static void ta_event_cb(lv_obj_t* ta_local, lv_event_t e)
{if (e == LV_EVENT_CLICKED && kb == NULL) {kb_create();}
}void lvgl_keyboard_test(void)
{/*Create a text area. The keyboard will write here*/ta = lv_textarea_create(lv_scr_act(), NULL);lv_obj_align(ta, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_DPI / 16);lv_obj_set_event_cb(ta, ta_event_cb);lv_textarea_set_text(ta, "");lv_coord_t max_h = LV_VER_RES / 2 - LV_DPI / 8;if (lv_obj_get_height(ta) > max_h) lv_obj_set_height(ta, max_h);kb_create();
}

好了,完结了,更多精彩继续戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

想做输入法界面?安排,LVGL『keyboard键盘控件』介绍相关推荐

  1. 制作一个GUI仪表盘,安排!LVGL『Gauge仪表盘控件』介绍

    一. LVGL GUI仪表盘控件的概念 仪表盘是一种带有刻度标签和一根或多根针的仪表.比如车速/车转速等 二. LVGL GUI仪表盘小部件和样式 量规的主要部分称为 LV_GAUGE_PART_MA ...

  2. GUI怎么能缺少列表, LVGL『List列表控件』介绍

    一. LVGL GUI列表控件的概念 列表是从背景页面和其上的按钮构建的.按钮包含一个可选的类似图标的图像(也可以是一个符号)和一个 Label.当列表足够长时,可以滚动它. 二. LVGL GUI列 ...

  3. 肝一个嵌入式日历吧!LVGL『Calendar日历控件』介绍

    一. LVGL GUI日历控件的概念 LVGL做的日历空间还是比较好看的,而且需要我们做的事情很少,LVGL的日历控件有以下功能 突出显示当天 突出显示任何用户定义的日期 显示日期名称 单击按钮进入下 ...

  4. 嵌入式GUI LVGL『Tableview选项卡控件』介绍

    一. LVGL GUI开关控件的概念 选项卡视图对象可用于组织选项卡中的内容. 二. LVGL GUI开关小部件和样式 Tab 视图对象包含几个部分.主要是 LV_TABVIEW_PART_BG .它 ...

  5. LVGL『Canvas画布控件』介绍

    一. LVGL GUI画布控件的概念 画布继承自图像,用户可以在其中绘制任何内容.可以使用 lvgl 的绘图引擎在此处绘制矩形,文本,图像,圆弧.除了一些"效果",还可以应用,例如 ...

  6. 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍

    一. LVGL GUI对象蒙版控件的概念 绘制其子级时,对象蒙版能够向图形添加一些蒙版 二. LVGL GUI对象蒙版小部件和样式 对象蒙版只有一个主要部分 LV_OBJMASK_PART_BG ,它 ...

  7. 嵌入式GUI LVGL『Text Area文本区域控件』介绍

    一. LVGL GUI文本区域控件的概念 文本区域是一个带有标签和光标的页面.文本或字符可以添加到它.长行被换行,当文本足够长时,可以滚动文本区域. 二. LVGL GUI文本区域小部件和样式 文本区 ...

  8. 嵌入式GUI LVGL『Tile View拼接视图控件』介绍

    一. LVGL GUI拼接视图控件的概念 Tileview是一个容器对象,其中的元素(称为tiles)可以以网格形式排列.通过滑动,用户可以在这些贴图之间导航. 如果Tileview是屏幕大小,它会提 ...

  9. GUI一灯大师,LVGL『LED控件』介绍

    一. LVGL GUI LED控件的概念 LED 是矩形(或圆形)的对象.它的亮度可以调节.亮度降低时,LED 的颜色会变暗. 二. LVGL GUI LED小部件和样式 LED 只有一个主要部分,称 ...

最新文章

  1. sqlalchemy 对 mysql 进行增删改查
  2. Oracle database datafile header中记录的datafile的大小
  3. BERT论文阅读(一): Pre-training of Deep Bidirectional Transformers for Language Understanding
  4. ajax文件上传报400,js ajaxfileupload.js上传报错的解决方法
  5. Java集合框架:总结
  6. 超越 YOLOv5 的目标检测开源项目又上新了
  7. 解决aapt命令在Linux下无法运行的问题
  8. LindDotNetCore~入门基础
  9. html5文本与段落简介,美化html段落文本 Ⅰ
  10. 西南大学计算机基础及数字电路907复习笔记
  11. 团队管理,领导的“无为”就是最大“有为”
  12. 8位处理器、16位处理器、32位处理器和64位处理器
  13. 【服务器数据恢复】IBM服务器RAID控制器出错的数据恢复案例
  14. 使用c语言实现后缀表达式计算器
  15. C++ 函数模板 实例化和具体化
  16. 电脑键盘按键都代表着什么意思?
  17. win10 1809无法更新(扩展EFI分区)
  18. 先掌握这 19 个 css 技巧,解决一些疑难杂症
  19. [深入研究4G/5G/6G专题-45]: 5G Link Adaption链路自适应-1-总体架构
  20. 嵌入式Linux驱动笔记(二十四)------framebuffer之使用spi-tft屏幕(上)

热门文章

  1. php查询二维数组中的值,如何在二维数组中查找一个指定的数值
  2. Web开发学习困难问题 西安尚学堂
  3. python 爬取糗事百科的段子
  4. Java数据库连接——JDBC新手安装、测试教程
  5. Android安装KALI
  6. 2019年工程造价表_住建部发布2019年工程造价咨询统计公报!
  7. .gitignore是干什么的?
  8. 大学宿舍无线覆盖解决方案
  9. 5个微信公众号加粉好方法,不看白不看!
  10. ubuntu关闭端口命令