芯课堂 | UI Creator 物理键盘移植指南

LVGL提供输入设备的种类一共有5种,分别是:touchpad(触摸板)、mouse(鼠标)、keypad(键盘)、encoder(编码器)、button(外部按键)。而基于UI Creator框架下我们已经提供了touchpad的输入设备移植,但通常在我们的项目中,有多种输入方式,除了比较常见的屏幕触摸之外,还有矩阵按键和旋转编码器等输入方式也较为常见,而键盘的移植和使用跟触摸板有所区别,本篇旨在详细说明如何基于UI Creator框架移植键盘的输入设备。

RECRUIT

首先我们找到lv_porting/lv_port_indev.c文件打开,在静态声明中把关于keypad相关的声明复制出来,如下图所示:

接着在lv_port_indev_init(void) 函数中同样把keypad相关的函数的复制出来,如下图所示:

然后在静态函数中同样地把keypad相关函数复制出来,如下图:

然后分别在keypad_init(void) 添加按键驱动的初始化和在keypad_get_key(void) 添加按键扫描代码,这里以每个IO驱动一个按键为例,将GPIO配置为输入、使能上拉,具体代码如下:

然后编写按键扫描代码,与其定义的键值一一匹配

为了方便验证,我们在keypad_read(...)中增加串口打印信息,来判断我们获取的键值是否正确

完成后编译下载,我们看到串口调试助手中,打印信息符合预期,至此我们的键盘移植完毕。

值得注意的是,我们需要使用lv_group_t *group = lv_group_create() 创建组,并且使用lv_group_add_obj(group, obj)在组中增加控件,最后将这个组添加给输入设备lv_indev_set_group(indev_keypad, group).

可以在界面的xxx_start(...)中创建组并添加控件,如下所示:

至此,我们完成了基于UI Creator的输入设备之键盘(keypad)的移植,并且已经添加对应的组和控件。

相关推荐
ZC跨境爬虫5 小时前
跟着 MDN 学 HTML day_61:(构建反馈表单的结构化挑战)
前端·javascript·ui·html·音视频
鹤卿1238 小时前
OC UI ——UIGestureRecognizer 手势识别
ui·ios·objective-c
阿正的梦工坊9 小时前
React:构建用户界面的JavaScript库
javascript·react.js·ui
byte轻骑兵9 小时前
【HID】规范精讲[16]: 蓝牙键盘默认状态玄机——连接中断后,那些设置为何会重置?
人工智能·计算机外设·人机交互·蓝牙键盘·蓝牙鼠标
代码对我眨眼睛10 小时前
Mac 如何单独修改鼠标滚动方向,而不影响触控板
macos·计算机外设·策略模式
ZC跨境爬虫11 小时前
跟着 MDN 学 HTML day_62:(HTML调试与常见错误修复指南)
java·前端·javascript·ui·html·媒体
赏金术士12 小时前
第二章:Compose入门—声明式UI编程
android·ui·kotlin·compose
兴通物联科技12 小时前
工业手持终端 PDA 键盘化设计与现场作业效率优化 —— 以 XT8001D 为例
大数据·物联网·计算机视觉·计算机外设·硬件架构
MilesShi12 小时前
UI 自动化的基本功:元素定位的原则、策略与实战经验
运维·ui·自动化
XTIOT66613 小时前
工业数据采集设备选型 —— 实体键盘 PDA 的技术优势与场景适配(基于 XT8001D 实践)摘要
大数据·嵌入式硬件·物联网·计算机外设