首先之前的工作都是为了想验证虚拟键盘的使用,才有了之前编译x11 、arm等qt的步骤。

在到这之前的构建环境,我说认真的,真的烦的要死,每次构建用的时间又多,配置完了编译会出一大堆error,加上公司自带的ubuntu的linux又低的可怕,早就不维护了,14.04算最新,12.04是普通版本。然后过了4个月后,换了个厂家的编译器,各种问题又出来了,

而安装qt、又常常缺少各种各样的库,用apt-get下载,万一下到最新版本,又不兼容,又要到官网下,每个缺少的包至少都试过3回- -! 。原本只有30G,硬生生被我装到100G以上,原本装着装着,桌面的文件全部变成可读?我激动得以为我中了病毒,重启发现时分配的硬盘爆了(vbox还不能扩容),现在开机都老老实实点“I” 进桌面,懂得都懂。我操。

在接触过后,发现盘盘(虚拟键盘,以后都这称呼)她其实完成得不是非常的好,很多功能都没有兼容(至少在linux上,在win上倒是还可以。就是可以用,但没有必要的那种),还有很多的bug(linux上致命的黑屏,由此衍生出各种的问题,我们唯一看上她就是语言多  ,??,但没有字库),要不是欧阳哥说要弄Qt的,我觉得自己做一个多国语言的可能还会更好。

其实最让我烦扰的是做这究竟有没有意义,意义打不打,连代码都不敲真的对我有帮助吗,除了知道编译流程,编下库,安装下软件,这应该是最基本的东西吧,但现在却把大把时间用在这。我有天发现,我连函数返回值都忘记了怎么用,突然就感到有点害怕

叨完了, 以下是5.13相关虚拟键盘的文档翻译,以及个人的见解(约等于没有)。还有一些以后可能用到的文件、或函数都会标记。


目录

概述

构建指令

1、配置选项

构建文档

1、Hunspell集成

2、T9 Write 集成

3、MyScript Text SDK集成

4、静态编译

Deployment(部署)

Desktop Targets

Boot2Qt Targets


其他链接: 

Qt5.13.0虚拟键盘 使用文档说明及函数说明 (二)部署指南 deployment-guide

Qt5.13.0虚拟键盘 使用文档说明及函数说明 (三)手写支持 Handwriting

Qt5.13.0虚拟键盘 使用文档说明及函数说明 (四)技术指南 Technicaly-Guide


位置:qtvirtualkeyboard-5.13\src\virtualkeyboard\doc\src\build.qdoc

搜索:Building Qt Virtual Keyboard

概述

位置 作用
/qtvirtualkeyboard-5.13/examples/virtualkeyboard/basic Qt 虚拟键盘 Demo
/qtvirtualkeyboard-5.13/src/import/

Qt 虚拟键盘 QML 插件(QtQuick.VirtualKeyboard)

其中plugins.qmltypes 定义了各个组件的属性

/qtvirtualkeyboard-5.13/src/plugin/ Qt虚拟键盘平台输入上下文插件。这个插件为Qt提供了QPlatformInputContext接口,并负责加载虚拟键盘插件。(可以清楚创建插件的流程。可以参考这)
/qtvirtualkeyboard-5.13/src/plugins/ 包含Qt虚拟键盘插件的目录 Hangul(韩语)、Hunspell(拼音检查器)、lipi-toolkit(在线手写识别的开源工具包)、myscript(手写识别输入法)、openwnn(日文输入法)、pinyin(我认为不用说了)、t9write(手写识别)、tcime(繁体)、thai(泰语)
/qtvirtualkeyboard-5.13/src/settings Qt虚拟键盘的QML插件设置 (QtQuick.VirtualKeyboard.Settings)
/qtvirtualkeyboard-5.13/src/styles

Qt虚拟键盘的QML插件风格

keyboardStyle.qml/keyIcon.qml/keypanel.qml标明关键qml的属性

/qtvirtualkeyboard-5.13/src\virtualkeyboard Qt虚拟键盘模块,QML组件和布局

拼音字库,权重文件!!!!
/qtvirtualkeyboard-5.13/src\plugins/pinyin/3rdparty/pinyin/data

设置大小样式
/qtvirtualkeyboard-5.13/src/virtualkeyboard/content/styles/default/style.qml

各种语言的输入模式及相关宏定义
qtvirtualkeyboard-5.13\src\virtualkeyboard\qvirtualkeyboardinputengine.cpp

语言选择框的qml定义

qtvirtualkeyboard-5.13\src\virtualkeyboard\doc\snippets\qtvirtualkeyboard-custom-language-popup.qml

Qt虚拟键盘的构建:

输入法用c++实现和QML实现。
Qt虚拟键盘提供了PlainInputMethod, MultitapInputMethod和HunspellInputMethod的实现。MultitapInputMethod是在QML中实现的,而其他方法是在c++中实现的。


构建指令

Qt虚拟键盘可以构建为Linux桌面/X11, Windows桌面或Boot2Qt目标。
QMAKE自动检测目标,不需要特殊的配置参数。

Qt Creator是Qt虚拟键盘的首选构建环境,因为您可以利用影子构建(shadow build)功能并在两者之间快速切换
构建目标。

在/qtvirtualkeyboard-5.13/src/config.pri中

1、配置选项

下表包含配置虚拟键盘功能的顶级选项。

Config 描述 备注
lang-<code> 启用指定的语言

此选项可用于根据需要对语言进行定制

其中<code>的格式 :为 "language_country"

其中 language是一个小写的,两个字母, ISO639的语言代号

country 是一个大写的,两个字母, ISO3166的国家代号

例子: CONFIG+=lang-fI_FI  使用芬兰语

额外:如果没有指定其他语言,虚拟键盘将自动包含所有语言

lang-all 使用所有语言。

这个标志实际上是CONFIG+="lang-ar_AR lang-da_DK…"的别名。

要仅构建特定的语言,请使用上面的lang-<code>选项。

默认开启

handwriting 开启手写输入支持

用于支持手写输入

此标志支持使用构建时可用的第一个引擎进行手写输入,顺序如下: myscript、 t9write、 lipi-toolkit。要使用特定的引擎启用手写输入,请使用特定于功能的配置。
        例如, CONFIG+=lipi-toolkit。

默认关闭

arrow-key-navigation 为键盘开启支持方向箭头

允许使用箭头和返回键控制键盘。

默认关闭

2、高级配置选项。

下面显示了在激活某个顶级特性(top-level feature)时将自动应用的高级配置选项。这些选项还可用于开启和关闭的功能。

高级 config Top-level-config 描述 备注
disable-desktop   禁用桌面集成

运行环境是X11或Windows桌面时,默认开启,使用这选项关闭。

而在嵌入式中,当InputPanel被应用程序立即激活时,不需要使用次选项;

但如果应用程序在将焦点设置为输入字段之前创建InputPanel,这时候虚拟键盘不会创建输入面板

disable-layouts    禁止内置默认的布局。 在运行应用程序之前,应该将 QT_VIRTUALKEYBOARD_LAYOUT_PATH环境变量设置为包含自定义键盘布局的文件系统目录。
disable-xcb   禁用X11集成 注意:从1.3开始就不推荐了。使用disable-desktop代替。
disable-hunspell   禁用hunspell集成(拼写检查) 如果系统上有可用的Hunspell库,或者使用本地项目文件构建该库,就可以启用Hunspell集成。可以使用此选项禁用。
no-bundle-pinyin   禁用拼音资源绑定 此选项从插件二进制文件中排除拼音资源。此选项可用于减小插件的二进制大小。
no-bundle-tcime   禁用tcime(繁体中文)资源绑定 此选项从插件二进制文件中排除tcime资源。此选项可用于减小插件的二进制大小。
static   启用虚拟键盘的静态构建  
retro-style   使用复古风格(黄色调) 将默认键盘样式更改为复古样式。这两种样式仍然包含在包中,但是这个选项允许您更改内置的默认样式。
no-builtin-style   禁止样式绑定 此选项排除插件二进制文件中的样式
pinyin 等于  lang-zh_CN 启用简体中文拼音输入法

此选项激活简体中文的拼音输入法。

当此选项激活特定语言时,如果指定此选项,则不启用lang-all选项。要构建所有的语言,使用CONFIG+=lang-all。

tcime 等于  lang-zh_TW 使仓颉注音两种输入法同时适用于繁体中文 同上 pinyin config

cangjie

等于  lang-zh_TW

启用 繁体中文的仓颉输入法 同上 pinyin config

zhuyin

等于  lang-zh_TW

启用 繁体中文的注音输入法 同上 pinyin config

hangul

等于  lang-ko_KR

启用韩语输入法

同上 pinyin config

openwnn

openwnn

启用openwnn日文输入法 同上 pinyin config
lipi-toolkit handwriting 使用Lipi Toolkit启用手写输入法。 Lipi Toolkit是基于开源的手写识别工具包。
t9write handwriting  启用使用T9 Write 的手写输入法 T9 Write是基于Nuance Communications的商用手写识别产品。
myscript handwriting   启用手写输入法使用MyScript文本SDK 基于MyScript最新的商业文本的手写识别SDK产品

构建文档

1、Hunspell集成

  • 默认情况下,除非找到Hunspell库和开发头文件,否则 HunspellInputMethod将不可用。
  • 对于Linux/X11目标,可以通过安装libhunspell-dev包来提供Hunspell库。
  • 另外,可以将Hunspell源代码提取到  src/plugins/hunspell/3rdparty/hunspell目录中。qmake将自动检测源,并将项目配置为使用本地Hunspell。
  • 如果使用了Hunspell源代码,那么字典文件也必须复制到 src/plugins/hunspell/3rdparty/hunspell/data目录中。

在Hunspell源和字典文件中复制后的目录结构
如下所示:

3rdparty
└── hunspell├── data│   ├── en_GB.aff│   └── en_GB.dic├── hunspell.pro└── src└── hunspell├── affentry.cxx├── affentry.hxx(etc.)

2、T9 Write 集成

T9 Write集成支持T9 Write字母和T9 Write CJK引擎。两个引擎都是通过T9WriteInputMethod集成的。
输入法可以在运行时使用任一引擎进行初始化。引擎选择是根据输入区域设置和键盘输入模式自动进行的。

T9 Write  兼容性

Qt虚拟键盘兼容T9 Write v7.5.0以上。

最新的测试版本是v7.8.1。

T9 Write 的构建准备工作

SDK的内容必须手动复制到下面描述的目录结构中,或者使用t9write目录中的unpack.py脚本。
使用脚本解压SDK:

cd src/plugins/t9write/3rdparty/t9write/
python unpack.py T9Write_Alpha_v7-8-0_SDK.zip .
3rdparty
└── t9write├─── api│   ├─── decuma*.h│   ├─── t9write*.h│   └─── xxt9w*.h├─── data│   ├─── arabic│   │   └─── *.bin [T9 Write Arabic]│   ├─── hebrew│   │   └─── *.bin [T9 Write Hebrew]│   ├─── *.bin [T9 Write Alphabetic]│   ├─── *.hdb│   ├─── *.phd│   └─── *.ldb [T9 Write v7.5]└─── lib├─── arm│   ├─── shared│   │   ├─── alphabetic│   │   │   └─── *.so│   │   └─── cjk│   │       └─── *.so│   └─── static│       ├─── alphabetic│       │   └─── *.a / *.o│       └─── cjk│           └─── *.a / *.o├─── linux-x86│   ├─── shared│   │   ├─── alphabetic│   │   │   └─── *.so│   │   └─── cjk│   │       └─── *.so│   └─── static│       ├─── alphabetic│       │   └─── *.a / *.o│       └─── cjk│           └─── *.a / *.o└─── win32├─── shared│   ├─── alphabetic│   │   ├─── *.dll│   │   └─── *.lib│   └─── cjk│       ├─── *.dll│       └─── *.lib└─── static├─── alphabetic│   └─── *.lib / *.obj└─── cjk└─── *.lib / *.obj

注意: 以上文件来自于T9编写的Windows演示SDK;内容可能因其他平台而异。

其中每个目录的内容为:

目录 描述 备注
api 这个目录包含所有的API文件

API文件通常位于SDK的“api”和“public”目录中,但有时也位于“demo”目录中。

当同时使用字母引擎和CJK引擎时,任何重叠的文件都可以从SDK中复制。

data 这个目录包含所有的HWR数据库和可选的XT9数据库。

HWR数据库为T9 write 字母:
       _databas_le.bin

HWR数据库为T9 Write CJK:
       cjk_HK_std_le.hdb 中文香港
       cjk_J_std_le.hdb 日语
       cjk_K_mkt_le.hdb 韩语
       cjk_S_gb18030_le.hdb 简体中文
       cjk_T_std_le.hdb 繁体中文

语言数据库:

文件扩展名为r .ldb 和 .phd

lib/<target>/<linkage>/<engine-variant>

目录结构包含受支持的目标构建。

这些目录应该包含所需的目标库。如果找到了共享库和静态库,则首选共享库。

例如,要启用静态win32构建,请复制 t9write_alphabetic_rel.obj到 lib/win32/static/alphabetic目录。

最后,通过在qmake命令行中添加CONFIG+=t9write,将SDK包含在构建中。

3、MyScript Text SDK集成

MyScript Text用于构建能够识别手写文本的应用程序。MyScript Text支持识别孤立的字符,草书,印刷和叠加文字。
MyScript叠加式书写被集成到Qt虚拟键盘中。
它可以识别字母、单词或单词的一部分,而不需要在连续的片段之间进行任何明确的分离。
能够在内存和CPU受限的设备上运行。

输入手写风格的MyScript Text SDK

最终用户可以将一个单词片段写在另一个上面,或者将一个字符写在另一个上面,如下所示。两个手写单词之间的空格会自动添加,因此不需要显式的手势。

MyScript Text SDK覆盖的语言

MyScript Superimposed 支持70种语言。

MyScript Text SDK Packages Installation

MyScript交付团队可以为您提供带有各种 .zip归档文件的包。
要访问构建自己的手写应用程序所需的所有代码、工具和资源,

{将所有包提取到与src/plugins/myscript/3rdparty/myscript相同的目标文件夹}中。

文件层次结构如下:

3rdparty
└── myscript├─── conf├─── doc├─── edk├─── engine│   └─── bin│       ├─── lin-arm64│       │   └─── *.so│       ├─── lin-armv7│       │   └─── *.so│       ├─── lin-x64│       │   └─── *.so│       ├─── lin-x86│       │   └─── *.so│       ├─── win-x64│       │   └─── *.dll│       ├─── win-x86│       │   └─── *.dll│       (etc.)├─── rdk├─── resources│   ├─── ar│   │   └─── *.res│   ├─── en_GB│   │   └─── *.res│   ├─── ja_JP│   │   └─── *.res│   ├─── ko_KR│   │   └─── *.res│   ├─── zh_CN│   │   └─── *.res│   (etc.)├─── tools└─── voim├─── api├─── bin│   ├─── lin-arm64│   │   └─── *.so│   ├─── lin-armv7│   │   └─── *.so│   ├─── lin-x64│   │   └─── *.so│   ├─── lin-x86│   │   └─── *.so│   ├─── win-x64│   │   └─── *.dll│   ├─── win-x86│   │   └─── *.dll│   (etc.)└─── conf

每个目录的内容描述如下:

目录 描述
conf 包含引擎用于配置语言资源的语言配置文件。
doc 包含HTML文档文件。文件 index.html显示主页。
edk 包含引擎开发工具包和每个支持的编程语言API的手写编程元素,包括代码示例。
engine 包含每个引擎对象的库,具体取决于目标平台,可以是SO、A或DLL。
rdk 包含资源开发工具包,即创建自定义资源的工具和示例。
resources 包含扩展名为 .res的资源文件。它们是由不同的MyScript技术在运行时用于实现各种识别任务的二进制资产。
tools 包含有用的程序员工具,包括油墨测试工具。
voim 包含MyScript文本输入法的库。它是MyScript文本识别系统的一个扩展SDK,旨在使用手写识别轻松快速地构建输入法。

设置MyScript Text SDK的证书

{使用MyScript文本SDK必须有有效的证书}。这是一种安全措施,它唯一地将您标识为MyScript技术的合法客户。该证书帮助MyScript跟踪客户的身份和购买的产品。

证书是在 [your_login].vo.zip包中交付的。当您解压缩此包时,证书将自动放在适当的位置。这将确保证书在提供给您的服务和代码示例中立即工作。

如何建立Qt虚拟键盘与MyScript Text SDK

通过在qmake命令行中添加 CONFIG+=手写或\c CONFIG+= MyScript, MyScript文本SDK包含在Qt虚拟键盘的构建中。

4、静态编译

虚拟键盘可以针对应用程序进行构建和静态链接。
这意味着Qt也是静态构建的(使用configure命令行中的-static选项)。

通过在qmake命令行中添加 CONFIG+= Static,然后重新构建,可以启用虚拟键盘的静态构建。
虚拟键盘使用的一些第三方模块总是构建为共享库。这些模块是Hunspell和Lipi Toolkit。

使用静态插件

应该将以下部分添加到使用静态构建的虚拟键盘的应用程序项目文件中。

static {QTPLUGIN += qtvirtualkeyboardpluginQT += svg
}

QTPLUGIN导致qmake获取虚拟键盘插件的链接器依赖项。SVG模块是Qt额外的依赖项,因为默认样式需要SVG格式。
从这里开始,使用静态构建的虚拟键盘与正常情况没有什么不同。

Deployment(部署)

Desktop Targets

添加一个执行 {make install}命令的部署步骤,然后使用 {Deploy All}命令进行部署。

Boot2Qt Targets

安装是通过将必要的文件复制到内存卡,或者使用adb push命令。


Qt5.13.0虚拟键盘 使用文档说明及函数说明 (一)构建 build相关推荐

  1. kubesphere3.0的安装完整文档

    kubesphere3.0的安装文档 https://www.yuque.com/leifengyang/kubesphere/hxzk3t#SAP5W 基于kubernetes环境安装kubesph ...

  2. Qt5编写一个记事本(多文档编辑器)

    目录 一.准备工作 1.1创建工程 1.2创建资源文件(myimages.qrc) 1.3创建界面文件(mainwindow.ui) 二.实现功能 1.1新建c++class类 1.2 MainWin ...

  3. 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单

    为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本  功能清单文档下载地址: 功 ...

  4. linux哪个版本支持tipc,Linux TIPC 2.0 Programmerapos;s Guide文档.doc

    Linux TIPC 2.0 Programmer's Guide文档 Linux TIPC 2.0 Programmer's Guide 04 January 2011 [software vers ...

  5. QT5.13.0 for IOS虚拟机开发环境配置版本

    iphone开发环境配置真的坑,不知道版本之间的匹配,装了好多个版本才配好.使用的是vmware15虚拟机来配置的环境: macOS版本:10.13.6 XCode版本:10.1 QT版本:5.13. ...

  6. jdk8.0 在线中文帮助文档地址(一步及达)

    jdk8.0 在线中文帮助文档地址 https://blog.fondme.cn/apidoc/jdk-1.8-baidu/

  7. python 帮助文档,撰写函数文档,并查看函数文档

    python 帮助文档,撰写函数文档,并查看函数文档 定义函数 def test(a,b):'''参数:a:整数b:整数返回值:a+b'''return a+b 运行函数 test(11,22) 33 ...

  8. 13.第十四章.文档和配置管理

    文章目录 14.1信息系统项目文档及其管理 14.2配置管理 14.3文档管理.配置管理工具: 补充 14.1信息系统项目文档及其管理 1.软件文档分为三类:开发文档.产品文档.管理文档 文档类型 作 ...

  9. linux下使用QT5.8实现虚拟键盘

    效果如图: qt自带的virtualkeyboard可以实现不同形态的虚拟键盘 步骤: 一.qt官网下载Linux的qt源码包,好像是5.3.0一下版本不带virualkeyboard,建议加载较高版 ...

最新文章

  1. matlab的rvctools,rvctools 机器人工具箱,主要用于 仿真, 型很强。 matlab 270万源代码下载- www.pudn.com...
  2. kafka概念使用简介注意点
  3. wps怎么画网络图_尼玛,WPS竟然悄悄搞了个免费的公文写作AI...【石说】
  4. 一文搞懂四种同步工具类
  5. Total Commander如何设置自定义快捷键在当前目录打开ConEmu
  6. 为什么会有ResNet? Why ResNet?
  7. maven私服搭建nexus
  8. Netty的并发编程实践4:线程安全类的应用
  9. 什么是简单边界点(Simple border points)
  10. matlab非牛顿流体,可用于常见非牛顿流体的数值模拟方法与流程
  11. 在一个局域网中,共享的项目别人访问不了,解决方法
  12. System.InvalidOperationException:“在应用程序配置文件中找不到名为“LDOAEntities”的连接字符串。”
  13. SAN光纤交换机常用命令整理(转)
  14. normalize.css v8.0.1中文版 - 官方最新
  15. 逻辑思维题总结与例题分析
  16. CX8825 3.1A数码显示车充IC 适用于快充方案,2019年最新方案
  17. [leetcode]Binary Tree Level Order Traversal II
  18. 论文中提到的池化方法的总结
  19. 嵌入式Web开发——Boa服务器移植
  20. 功劳是老板的、钱财是子女的、身体是自己的...

热门文章

  1. Guava学习之Joiner
  2. 苹果蓝牙耳机怎么接电话_除了苹果AirPods,真无线蓝牙耳机到底怎么选?
  3. Visio中旋转文本框与箭头平行
  4. 想用FPGA加速神经网络,这两个开源项目你必须要了解
  5. mui12搭载鸿蒙,MUI系统最新资讯
  6. 5.文献研读---基于教育数据挖掘的在线学习者 学业成绩预测建模研究--陈子健 朱晓亮...
  7. php 跳转邮箱,JS点击跳转登陆邮箱功能简单的实现方法
  8. IP、MAC地址,交换机路由器,ARP、NAT协议串讲
  9. python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...
  10. python计算存款复利计算器_《Python核心编程》第五章:数字