芯课堂 | 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)的移植,并且已经添加对应的组和控件。

相关推荐
互联网散修10 小时前
鸿蒙应用开发UI基础第三十六节:Grid网格布局二维自适应宫格与不规则布局方案
ui
NGBQ1213812 小时前
Seelen.UI_2.5.7_x64-setup.exe 全解析:专业界面设计与原型构建工具深度指南
ui
irpywp14 小时前
Boneyard:基于组件映射的骨架屏方案
前端·ui·github
好家伙VCC14 小时前
# MAUI 中的异步加载优化实战:从理论到高性能 UI 体验提升在现代跨平台移动开发中,*
java·python·ui
ZC跨境爬虫15 小时前
Playwright核心操作实战精讲(QQ空间+百度+iframe,含等待_键盘_iframe操作)
前端·爬虫·python·计算机外设
智算菩萨1 天前
【Pygame】第17章 游戏用户界面系统与菜单交互设计实现
游戏·ui·pygame
智算菩萨1 天前
【Tkinter】15 样式与主题深度解析:ttk 主题系统、Style 对象与跨平台样式管理实战
开发语言·python·ui·ai编程·tkinter
开开心心就好1 天前
免费好用:PPT演示计时提醒工具
windows·计算机视觉·计算机外设·逻辑回归·excel·深度优先·csdn开发云
春日见1 天前
TEST文件夹:Pytest,集成测试,单元测试
服务器·人工智能·驱动开发·单元测试·计算机外设·集成测试·pytest
星夜泊客2 天前
Unity 排行榜 UI 优化:从全量生成到滚动复用
ui·unity·性能优化·游戏引擎