合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)
键盘 (Keyboard)

LVGL 可以添加触摸键盘,但是很明显,使用触摸键盘的话必须要使用触摸的输入方式,否则无法驱动键盘。
示例代码
function keyCb(obj, e)-- 默认处理事件lvgl.keyboard_def_event_cb(keyBoard, e)if(e == lvgl.EVENT_CANCEL)thenlvgl.keyboard_set_textarea(keyBoard, nil)--删除 KeyBoardlvgl.obj_del(keyBoard)keyBoard = nilend
endfunction textAreaCb(obj, e)if (e == lvgl.EVENT_CLICKED) and not keyBoard then--创建一个 KeyBoardkeyBoard = lvgl.keyboard_create(lvgl.scr_act(), nil)--设置 KeyBoard 的光标是否显示lvgl.keyboard_set_cursor_manage(keyBoard, true)--为 KeyBoard 设置一个文本区域lvgl.keyboard_set_textarea(keyBoard, textArea)lvgl.obj_set_event_cb(keyBoard, keyCb)end
endtextArea = lvgl.textarea_create(lvgl.scr_act(), nil)
lvgl.obj_set_size(textArea, 200, 40)
lvgl.textarea_set_text(textArea, "please input:")
lvgl.obj_align(textArea, DEMO_BASE_CONT, lvgl.ALIGN_CENTER, 0, -45)
lvgl.obj_set_event_cb(textArea, textAreaCb)
创建
通过 keyboard_create 可以创建键盘,实际上只要这一句就可在界面上显示键盘了。很难得的是,键盘没有复制对象,lvgl.keyboard_create 只需要传入一个参数就可以了。
keyBoard = lvgl.keyboard_create(lvgl.scr_act())

模式
键盘支持几种模式, 分别是 大写,小写,数字符号。
可以通过 lvgl.keyboard_set_mode 切换键盘的模式。
lvgl.KEYBOARD_MODE_TEXT_LOWER -- 小写模式
lvgl.KEYBOARD_MODE_TEXT_UPPER -- 大写模式
lvgl.KEYBOARD_MODE_TEXT_SPECIAL -- 特殊符号模式(*)
lvgl.KEYBOARD_MODE_NUMBER -- 数字模式(*)
目前可以通过 API 设置的模式是大小写模式,其余模式需要在键盘上手动切换了,其中数字和符号在键盘上是一种布局,显示在一起的。我们来看下键盘的这几种模式:
小写

大写

数字符号

事件
键盘当然是输入了,不过键盘的输入是针对于 文本框(Textarea) 控件的,要想演示键盘的一个输入效果,需要首先创建一个文本框,同时对文本框控件设置点击事件的回调函数。当文本框控件被点击的时候就会创建一个键盘,同时将键盘的输入绑定到文本框。当键盘点击确定或者取消时,就销毁键盘,在下次点击的时候重新创建。
键盘设置回调函数的方式如下,但是单独设置键盘回调函数是没有什么意义的,完整的代码可以参考上面的示例代码。
function keyCb(obj, e)-- 默认处理事件lvgl.keyboard_def_event_cb(keyBoard, e)if(e == lvgl.EVENT_CANCEL)thenlvgl.keyboard_set_textarea(keyBoard, nil)--删除 KeyBoardlvgl.obj_del(keyBoard)keyBoard = nilend
endkeyBoard = lvgl.keyboard_create(lvgl.scr_act(), nil)
lvgl.obj_set_event_cb(keyBoard, keyCb)
需要注意的是,在处理键盘事件的开始,首先要调用 lvgl.keyboard_def_event_cb 函数,来进行一些默认的事件处理。
API
lvgl.imgbtn_create
| 调用 | lvgl.imgbtn_create(par) |
|---|---|
| 功能 | 创建一个键盘对象 |
| 返回 | 指向创建键盘的指针 |
| 参数 | |
| par | 指向对象的指针, 它将是键盘的父对象 |
lvgl.keyboard_set_textarea
| 调用 | lvgl.keyboard_set_textarea(kb, ta) |
|---|---|
| 功能 | 绑定文本框,键盘的输入会传到这里 |
| 参数 | |
| kb | 指向创建键盘的指针 |
| ta | 需要绑定的文本框对象的指针。 |
lvgl.keyboard_set_mode
| 调用 | lvgl.keyboard_set_mode(kb, mode) |
|---|---|
| 功能 | 设置键盘的新模式 |
| 参数 | |
| kb | 指向键盘对象的指针 |
| mode | 需要设置的键盘模式 |
lvgl.keyboard_set_cursor_manage
| 调用 | lvgl.keyboard_set_cursor_manage(kb, en) |
|---|---|
| 功能 | 设置键盘在激活文本框时是否显示光标 |
| 参数 | |
| kb | 指向键盘对象的指针 |
| en | true 显示光标, false 不显示光标 |
lvgl.keyboard_get_textarea
| 调用 | lvgl.keyboard_get_textarea(kb) |
|---|---|
| 功能 | 获取键盘绑定的文本框 |
| 返回 | 键盘绑定的文本框 |
| 参数 | |
| kb | 指向键盘对象的指针 |
lvgl.keyboard_get_mode
| 调用 | lvgl.keyboard_get_mode(kb) |
|---|---|
| 功能 | 获取键盘当前的模式 |
| 返回 | 键盘当前的模式 |
| 参数 | |
| kb | 指向键盘对象的指针 |
lvgl.keyboard_get_cursor_manage
| 调用 | lvgl.keyboard_get_cursor_manage(kb) |
|---|---|
| 功能 | 获取键盘当前是否会激活光标 |
| 返回 | true 会显示光标,false 不会显示光标 |
| 参数 | |
| kb | 指向键盘对象的指针 |
lvgl.keyboard_def_event_cb
| 调用 | lvgl.keyboard_def_event_cb(kb, e) |
|---|---|
| 功能 | 默认处理键盘事件的程序。 |
| 参数 | |
| kb | 指向键盘对象的指针 |
| e | 键盘接收到的事件 |
相关文章:
合宙Air724UG LuatOS-Air LVGL API控件-键盘 (Keyboard)
键盘 (Keyboard) LVGL 可以添加触摸键盘,但是很明显,使用触摸键盘的话必须要使用触摸的输入方式,否则无法驱动键盘。 示例代码 function keyCb(obj, e)-- 默认处理事件lvgl.keyboard_def_event_cb(keyBoard, e)if(e lvgl.EVENT_CANCEL)the…...
pytorch深度学习实践
B站-刘二大人 参考-PyTorch 深度学习实践_错错莫的博客-CSDN博客 线性模型 import numpy as np import matplotlib.pyplot as pltx_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0]def forward(x):return x * wdef loss(x, y):y_pred forward(x)return (y_pred - y) ** 2# …...
直方图反向投影(Histogram Backprojection)
直方图反向投影(Histogram Backprojection)是一种在计算机视觉中用于对象检测和图像分割的技术。它的原理基于图像的颜色分布,允许我们在一幅图像中找到与给定对象颜色分布相匹配的区域。这个技术常常用于图像中的目标跟踪、物体识别和图像分…...
day32 泛型 数据结构 List
一、泛型 概述 JDK1.5同时推出了两个和集合相关的特性:增强for循环,泛型 泛型可以修饰泛型类中的属性,方法返回值,方法参数, 构造函数的参数 Java提供的泛型类/接口 Collection, List, Set,Iterator 等 …...
DW-AHB Central DMAC
文章目录 AHB Central DMAC —— Design Ware AHB Central DMAC —— Design Ware AHB(Adavenced High-performace BUS) Central DMAC(Direct Memory Access Controller) : 一个高性能总线系统。 作用:在嵌入式系统种连接高速设备,如处理器内存&#x…...
JavaScript设计模式(四)——策略模式、代理模式、观察者模式
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...
JS画布的基本使用
直线 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <style> #myname{ border: 1px solid red; /* background: linear-gradient(to righ…...
c++ set/multiset
set/multiset 集合,一个单个,一个多个(multi)。两个库都是"set"。 https://blog.csdn.net/fckbb/article/details/130917681 对象创建 set(const Pred& compPred(),const A& alA()):创建空集合。set(const set& x):…...
多线程与高并发——并发编程(4)
文章目录 四、阻塞队列1 基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法2 ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法2.2.3 offer方法2.2.4 offer(time,unit)方法2.2.5 put方法2.3 消…...
设计模式之建造者模式
文章目录 盖房项目需求传统方式解决盖房需求传统方式的问题分析建造者模式概述是建造者模式的四个角色建造者模式原理类图建造者模式的注意事项和细节 盖房项目需求 需要建房子:这一过程为打桩、砌墙、封顶房子有各种各样的,比如普通房,高楼…...
源码编译安装opencv4.6.0,别的版本也行
1.下载opencv4.6.0 系统: ubuntu 1804 64位点我下载opencv 4.6.0 https://codeload.github.com/opencv/opencv/zip/refs/tags/4.6.0 指令下载 推荐: wget -O opencv.zip https://github.com/opencv/opencv/archive/4.6.0.zip wget -O opencv_contrib.zip https://github.com/…...
【MongoDB】Springboot中MongoDB简单使用
1. docker安装MongoDB 拉取镜像 docker pull mongo创建容器 docker run -di --name mongo-service --restartalways -p 27017:27017 -v ~/data/mongodata:/data mongo2. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactI…...
Python 面试:单元测试unit testing 使用pytest
1. 对于函数进行单元测试 calc.py def add(x, y):"""Add Function"""return x ydef subtract(x, y):"""Subtract Function"""return x - ydef multiply(x, y):"""Multiply Function""…...
螺旋矩阵、旋转矩阵、矩阵Z字打印
螺旋矩阵 #include <iostream> #include <vector> void display(std::vector<std::vector<int>>&nums){for(int i 0; i < nums.size(); i){for(int j 0; j < nums[0].size(); j){std::cout<<nums[i][j]<< ;}std::cout<<…...
Seaborn绘制热力图的子图
Seaborn绘制热力图的子图 提示:如何绘制三张子图 绘制的时候,会出现如下问题 (1)如何绘制1*3的子图 (2)三个显示条,如何只显示最后一个 提示:下面就展示详细步骤 Seaborn绘制热力…...
C++二级题目4
小白鼠再排队 不会 多余的数 #include<iostream> #include<string.h> #include<stdio.h> #include<iomanip> #include<cmath> #include<bits/stdc.h> int a[2000][2000]; int b[2000]; char c[2000]; long long n; using namespace std; i…...
Tomcat 部署时 war 和 war exploded区别
在 Tomcat 调试部署的时候,我们通常会看到有下面 2 个选项。 是选择war还是war exploded 这里首先看一下他们两个的区别: war 模式:将WEB工程以包的形式上传到服务器 ;war exploded 模式:将WEB工程以当前文件夹的位置…...
Delphi IdTcpServer IdTcpClient 传输简单文本
Delphi IdTcpServer IdTcpClient 传输简单文本 已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!FStringStream 、FStrStream : FStringStream:TStringStream.Create(,TEncoding.UTF8); 已经很久敲代码了,…...
界面控件Telerik UI for WPF——Windows 11主题精简模式提升应用体验
Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。Telerik UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visua…...
PoseC3D 基于人体姿态的动作识别新范式
摘要1. Introduction2. Related Work动作识别 3D-CNN基于骨架的动作识别 GCN基于骨骼的动作识别 2D-CNN3. Framework3.1. Good Practice for Pose Extraction3.2. From 2D Poses to 3D Heatmap Volumes3.3 基于骨骼的动作识别 3D-CNNPose-SlowOnlyRGBPose-SlowFast4. Experimen…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
