# QtInputMethod_GooglePinyin **Repository Path**: boardhuge/QtInputMethod_GooglePinyin ## Basic Information - **Project Name**: QtInputMethod_GooglePinyin - **Description**: 基于Google拼音内核的Qt5拼音输入法 - **Primary Language**: C++ - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 17 - **Created**: 2024-05-17 - **Last Updated**: 2024-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 嵌入式qt谷歌输入法虚拟键盘 ## 效果展示 ![imx6ull中文输入法测试](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/imx6ull%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5%E6%B3%95%E8%99%9A%E6%8B%9F%E9%94%AE%E7%9B%98%E6%B5%8B%E8%AF%95.jpg) ![imx6ull数字小键盘测试](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/imx6ull%E8%99%9A%E6%8B%9F%E6%95%B0%E5%AD%97%E5%B0%8F%E9%94%AE%E7%9B%98%E6%B5%8B%E8%AF%95.jpg) ## 说明 输入法键盘的原作者gitee仓库: Qt 拼音输入法,采用Google拼音内核 https://gitee.com/tgtsml/QtInputMethod_GooglePinyin.git 该输入法给做Linux屏幕Qt的HMI人机交互应用的工程师,提供了方便可靠的虚拟键盘。 也希望有高手能在这个基础上进行继续改进! 本人移植到开发板测试可行后,对输入纯数字的场景下不是那么好用。 就对键盘源码进行修改,添加了数字小键盘。 为了尊重原作者的AGPL-3.0开源协议,现也将代码开源。 v0.1 新添加小数字键盘模式 - 添加数字小键盘模式 - 测试imx6ull开发板环境下编译程序 - 测试window64位下mingw64编译程序 (希望有高手能尝试修改输入法来自动识别输入控件所需输入内容, 如果是只能输入数字则自动来切换到数字小键盘模式) 例如Qt有些控件就是只限制输入数字 比如spinbox,属性inputMethodHints默认是ImhFormattedNumbersOnly 也就是只能输入数字,在qt官方是输入法是会根据这个来直接把键盘切换到数字小键盘的。 但是输入法现在只能自己手动切换。 我没找到在哪传出控件是否是只能输入数字的信号,就没能修改自动切换。 如果有高手知道可以在此基础上修改后开源或通过gitee通知我如何修改。 ## 使用方法 ### 克隆源代码工程仓库 需要安装好git环境 没有git也可以在gitee下载zip压缩包直接使用。 git命令行下载拷贝使用 ``` git clone https://gitee.com/nikolan/QtInputMethod_GooglePinyin ``` ### 编译测试工程教程 (这里我主要是讲ubuntu虚拟机编译后放到arm开发板下编译的方法, window或者ubuntu的和这个有些差别主要是库文件格式和位置不同) 这里测试的是用正点原子的imx6ull阿尔法开发板 主要因为是编译到开发板上是需要交叉编译的 我这里使用官方配置好环境的ubuntu虚拟机的Arm-Qt-5.12.9编译套件 1. 编译谷歌输入法的静态库(只编译不运行) 首先qtcreator打开googlepinyin工程编译后 在plugin/googlepinyin目录下 会生成输入法库文件libgooglepinyin.a ![编译谷歌拼音库](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/1%E7%BC%96%E8%AF%91%E8%B0%B7%E6%AD%8C%E6%8B%BC%E9%9F%B3%E5%BA%93.png) 1. 编译qt键盘插件(只编译不运行) qtcreator打开plugin工程编译后 在target/platformInputContexts生成.so文件 同时拷贝dict文件夹到target文件夹下 ![编译qt键盘插件](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/2%E7%BC%96%E8%AF%91qt%E8%BE%93%E5%85%A5%E6%B3%95%E6%8F%92%E4%BB%B6%E5%BA%93.png) 3. 编译测试例程(只编译不运行) qtcreator打开testWindow工程编译后 在target生成window程序 ![编译测试程序](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/blob/master/doc/6%E7%BC%96%E8%AF%91%E6%B5%8B%E8%AF%95%E4%BE%8B%E7%A8%8B.png) 4. 拷贝程序到开发板 把target文件夹下所有文件包含文件夹结构 拷贝到开发板上设置权限后运行 ![库文件1](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/3%E7%94%9F%E6%88%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%E5%92%8C%E5%AD%97%E5%85%B8%E5%BA%93%E5%92%8C%E9%94%AE%E7%9B%98%E5%BA%93.png) ![库文件2](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/4%E8%B0%B7%E6%AD%8C%E8%BE%93%E5%85%A5%E6%B3%95%E5%AD%97%E5%85%B8%E5%BA%93.png) ![库文件3](https://gitee.com/nikolan/QtInputMethod_GooglePinyin/raw/master/doc/5%E8%99%9A%E6%8B%9F%E9%94%AE%E7%9B%98%E8%BE%93%E5%85%A5%E6%B3%95%E5%BA%93.png) 这里我是通过SecureCRT 7.3使用串口rz指令传文件 如果有接网线你也可以使用ssh或者ftp等方法传会更快一些。 首先我在home目录下测试 详细步骤如下: 跳转到home目录 ``` cd ~/ ``` 创建文件夹 dict和platformInputContexts ``` mkdir dict platforminputcontexts ``` 跳转到dict ``` cd dict ``` 输入rz回车,选择target/dict的文件用串口上传到开发板 最终在dict目录下有dict_pinyin.dat dict_pinyin_user.dat ``` cd ../platformInputContexts ``` 输入rz回车,选择target/platforminputcontexts的文件用串口上传到开发板 最终在dict目录下有libtgtsmlInputContextPlugin.so ``` cd ~ ``` 输入rz回车,选择target/window的文件用串口上传到开发板 最终在~目录下有window 给测试程序权限 ``` chmod 777 window ``` 执行测试程序 ``` ./window ``` ### 如何在自己工程内使用? 需要编译googlepinyin工程和plugin工程 最终在编译后生成的target目录下有dict和platforminputcontexts目录 这2个目录需要和你自己工程的可执行文件放在一起 然后在自己的工程参考testwindow工程那样 在main.c 的main函数加入这句代码 ``` qputenv("QT_IM_MODULE", "tgtsml"); ``` 放在创建QApplication a(argc, argv);之前 注意在可执行文件目录下 添加编译出来的dict和platforminputcontexts目录及其文件 然后运行可执行文件就可以使用键盘了