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

相关推荐
沉默金鱼9 小时前
Unity实用技能-UI进度条
ui·unity·游戏引擎
鸿蒙开发工程师—阿辉14 小时前
HarmonyOS 上下文的使用: 脱离 UI 怎么用 Context?
ui·华为·harmonyos
前端小天才16 小时前
element-ui图标偶现乱码问题的原因和修复方法
开发语言·ui·rust
UI设计兰亭妙微17 小时前
北京兰亭妙微:深耕UI/UX全流程,以大数据可视化与3D场景设计驱动数字体验升级
ui·信息可视化
hunteritself17 小时前
Adobe 把 Photoshop 搬进了 ChatGPT,免费的
gpt·机器学习·ui·adobe·chatgpt·智能手机·photoshop
驱动开发0071 天前
Windows_Hello_Configuration_Analysis Windows Hello 配置过程分析 setup包分析
windows·驱动开发·云计算·计算机外设·usb重定向
就是蠢啊1 天前
51单片机——TFTLCD显示器(一)
嵌入式硬件·计算机外设·51单片机
Larry_Yanan1 天前
Qt多进程(五)QUdpSocket
开发语言·c++·qt·学习·ui
我命由我123451 天前
Photoshop - Photoshop 工具栏(43)标尺工具
学习·ui·职场和发展·求职招聘·职场发展·学习方法·photoshop
开心-开心急了1 天前
ai + fluent_ui 实现自定义winUI风格窗口
flutter·ui