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

news2024/9/29 21:28:46

键盘 (Keyboard)

keyboard.png


LVGL 可以添加触摸键盘,但是很明显,使用触摸键盘的话必须要使用触摸的输入方式,否则无法驱动键盘。

示例代码

function keyCb(obj, e)
    -- 默认处理事件
    lvgl.keyboard_def_event_cb(keyBoard, e)
    if(e == lvgl.EVENT_CANCEL)then
        lvgl.keyboard_set_textarea(keyBoard, nil)
        --删除 KeyBoard
        lvgl.obj_del(keyBoard)
        keyBoard = nil
    end
end

function textAreaCb(obj, e)
    if (e == lvgl.EVENT_CLICKED) and not keyBoard then
        --创建一个 KeyBoard
        keyBoard = 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
end

textArea = 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())

键盘.bmp

模式

键盘支持几种模式, 分别是 大写,小写,数字符号
可以通过 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)then
        lvgl.keyboard_set_textarea(keyBoard, nil)
        --删除 KeyBoard
        lvgl.obj_del(keyBoard)
        keyBoard = nil
    end
end

keyBoard = 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指向键盘对象的指针
entrue 显示光标, 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键盘接收到的事件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/984274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后流量时代的跨境风口:Facebook广告

Facebook拥有超过25亿各个年龄段和人群的每月活跃用户,可以帮助您接触世界各地的相关消费者。无论您是需要吸引新的潜在客户还是吸引回头客访问您的在线商店,Facebook广告都可以为电子商务提供丰厚的投资回报;无论您是在沃尔玛、eBay、亚马逊…

Spring-MVC的crud增删改查--详细讲解

目录 一.前言 二.crud---配置文件 2.1 pom.xml文件 2.2 web.xml文件 2.3 spring-context.xml 2.4 spring-mvc.xml 2.5 spring-MyBatis.xml 2.6 jdbc.properties数据库配置文件 2.7 generatorConfig.xml 2.8 日志文件log4j 三.后台 3.1 pageBean.java 3.2 pageTag 3.…

进军公有云这一年,OceanBase做了什么

*本文转载自微信公众号“机器之心,ID:almosthuman2014” 如今,数据库市场正在迈入新的竞争阶段——一场云上的角逐。 2022 年,中国公有云数据库市场规模首次过半[1],预计未来占比将进一步扩大。许多中国的数据库厂商也…

新能源商用车软件开发设计规范

目 录 前 言.............................................................................................................. 1 1 范围............................................................................................................... 2 2 规范性…

用HexView 观察编译后的机器代码

HexView 用于打开任意一个文件,以十六进制的形式从头到尾显示它每个字节的内容。 下载: 链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA 提取码:5ndl双击启动 HexView,然后选择菜单“文件”-“打开文件以显…

专业游戏翻译公司怎么选择比较合适

近年来,游戏行业持续繁荣,市场需求也在不断扩大,其中游戏翻译的需求越来越旺盛。无论是引进游戏还是让游戏走向国际市场,都需要专业的翻译公司来帮忙。那么,怎么选择合适的游戏翻译公司呢?让我们一起来看看…

jmeter 准确的吞吐量定时器 Precise Throughput Timer

准确的吞吐量定时器使用实例 提取码:gpex: 说明:配置10个线程,每个线程请求200次,通过准确地屯托梁定时器模拟QPS为20的场景 配置测试接口参考链接 配置jmeter测试脚本,主要关注准确的吞吐量定时器参数配置…

(2022 COLING)Context-Tuning情景化提示

论文题目(Title):Context-Tuning: Learning Contextualized Prompts for Natural Language Generation 研究问题(Question):自然语言生成,生成长文本。 研究动机(Motivation&#…

春播秋收 “羊”鸣德州 一场“苏尼特羊”跨越千里的美丽邂逅

恰逢金秋丰收时节,中秋佳节来临之际,9月2日,百仕达地标之都整合天南海北优质农产品,联合苏尼特右旗和德州市天衢新区,共同举办“2023年地标之都中秋选货节暨苏尼特羊推介会”。 本次活动以“ 收自然之硕鉴本味之美”为…

国标GB28181协议视频平台EasyGBS国标平台设备播放断流现象的排查分析及解决

EasyGBS平台基于GB28181国标协议,支持多路设备接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等多种格式的视频流。平台可为大数据等综合性监管平台提供极强的视频能力,已经在大量的项目中落地应用,如明厨亮灶、平安…

框架分析(10)-SQLAlchemy

框架分析(10)-SQLAlchemy 专栏介绍SQLAlchemy特性分析ORM支持数据库适配器事务支持查询构建器数据库连接池事务管理器数据库迁移特性总结 优缺点优点强大的对象关系映射支持多种数据库灵活的查询语言自动管理数据库连接支持事务管理易于扩展和定制 缺点学…

华硕ROG2/ROG5/ROG6/ROG7Pro强解锁L锁-快速实现root权限-支持Zenfone9/8/7

2023年9月新增解锁BL适配(需要联系技术远程操作): 新增支持华硕ROG5/5S/5Pro机型强制解锁BL,并且支持OTA在线更新功能 新增支持华硕ROG6/6Pro机型强制解锁BL,并且支持OTA在线更新功能 新增支持华硕ROG7/7Pro机型强制解…

antd中在vue项目中自定义穿梭框

antd中在vue项目中自定义穿梭框 1、完成代码 <template><a-modaltitle"高危因素选择":width"1000":visible"riskVisible":confirm-loading"confirmLoading"ok"handleOk"cancel"handleCancel"okText&qu…

攻克海外市场!企业客户培育,销售额倍增

随着全球市场的不断融合和国际贸易的加速&#xff0c;越来越多的企业纷纷进军海外市场&#xff0c;寻求新的增长机会。然而&#xff0c;在这一过程中&#xff0c;客户培育成为了取得成功的关键因素之一。运营坛今天将带领大家深入剖析为什么客户培育在国际市场尤为关键&#xf…

手写Spring:第2章-创建简单的Bean容器

文章目录 一、目标&#xff1a;创建简单的Bean容器二、设计&#xff1a;创建简单的Bean容器三、实现&#xff1a;创建简单的Bean容器3.0 引入依赖3.1 工程结构3.2 创建简单Bean容器类图3.3 Bean定义3.4 Bean工厂 四、测试&#xff1a;创建简单的Bean容器4.1 用户Bean对象4.2 单…

cmake编译(qtcreator)mingw下使用的osg3.6.5

官网下载osg3.6.5源码&#xff0c;先不使用依赖库&#xff0c;直接进行编译 如果generate后报错&#xff0c;显示找不到boost必须库&#xff0c;则手动增加路径。然后先在命令行中使用mingw32-make&#xff0c;如果显示不存在&#xff0c;则需要去环境变量里配置一下这个工具的…

h5开发网站-使用jquery来实现二层嵌套的左侧列表,点击后显示右侧内容的效果

一、需求&#xff1a; 使用jquery来实现二层嵌套的左侧列表&#xff0c;点击后显示右侧内容的效果。 二、思路&#xff1a; 为一级列表项和二级子列表项分别添加了点击事件处理程序。当一级列表项被点击时&#xff0c;使用.slideToggle()方法展开或收起对应的二级子列表项。…

Linux--进程--vfork与fork区别

vfork&#xff1a; 所需头文件&#xff1a;#include <sys/types.h> #include <unistd.h> pid_t vfork(void); 功能&#xff1a; vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 参数&#xff…

【自执行闭包JS逆向】某网站登录MD5加密分析

文章目录 一、写在前面二、抓包分析三、加密函数分析 一、写在前面 最近工作比较忙&#xff0c;不过还是在督促自己利用有限的时间学习更新一些技术文章。互联网这个行业大家目前也都知道是非常内卷的&#xff0c;所有大家在工作之余养成良好的自主学习习惯是非常好的&#xff…

egg单元测试Mocha报错Error: Cannot find module ‘mocha‘解决办法

最近在玩egg&#xff0c;使用mocha作为单元测试工具时发现一个很奇怪的报错&#xff0c;差了大多数文档都没说明&#xff0c;只好去官网搜了下&#xff0c;发现官网有解决方案。 1. 问题 如果你的报错和我的差不多&#xff0c;恭喜您&#xff0c;以下就是解决方案。 2. 解决方…