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

相关推荐
好游科技2 小时前
高质量聊天交友社交类APP客户端UI解决方案
ui·交友·im即时通讯·社交软件·社交语音视频软件
Howie Zphile4 小时前
做移动端的 Next.js 项目,可以选哪些 UI?
开发语言·javascript·ui
johnny2335 小时前
LLM交互工具汇总:Open WebUI、ChatBot-UI、浏览器插件、Studio
ui
0***863318 小时前
SQL Server2019安装步骤+使用+解决部分报错+卸载(超详细 附下载链接)
javascript·数据库·ui
Jwest202121 小时前
工业显示器在淬火机床中的应用
计算机外设
Apeng_09191 天前
ui-picture-bd-marker实现图片标注功能
ui·vue
TESmart碲视1 天前
2025年 顶级8K DP KVM切换器双PC双显示器解决方案
计算机外设
晚霞的不甘1 天前
社区、标准与未来:共建 Flutter 与 OpenHarmony 融合生态的可持续发展路径
安全·flutter·ui·架构
Aevget1 天前
从业务面板到多视图协同:QtitanDocking如何驱动行业级桌面应用升级
c++·qt·ui·ui开发·qt6.3