• 16962阅读
  • 65回复

集成google输入法的嵌入式中文输入面板 [复制链接]

上一主题 下一主题
离线笑颜
 

只看楼主 倒序阅读 楼主  发表于: 2018-07-17
离线nigoole

只看该作者 1楼 发表于: 2018-07-17
有句话说得好:好好学习,天天向上。加油~~!有上船的朋友联系企鹅393320854
离线stlcours

只看该作者 2楼 发表于: 2018-07-17
博客里的文章少了点,加油多写点啊,造福众生~~
离线ccazqyy

只看该作者 3楼 发表于: 2018-07-18
        
离线liudianwu

只看该作者 4楼 发表于: 2018-07-18
输入法核心做得非常棒,比我那个要好,支持首字母模糊查找,尤其是谷歌输入法的核心部分,大大的赞!
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线nigoole

只看该作者 5楼 发表于: 2018-07-18
回 liudianwu 的帖子
liudianwu:输入法核心做得非常棒,比我那个要好,支持首字母模糊查找,尤其是谷歌输入法的核心部分,大大的赞![表情]  (2018-07-18 11:25) 

终于可以给你的跑车换轮胎了!~飞起
有句话说得好:好好学习,天天向上。加油~~!有上船的朋友联系企鹅393320854
离线robinsonsir

只看该作者 6楼 发表于: 2018-07-24
  
离线hehui

只看该作者 7楼 发表于: 2018-07-27
离线txc314159

只看该作者 8楼 发表于: 2018-07-31
测试部分为什么没用,不能输东西进去。
离线笑颜

只看该作者 9楼 发表于: 2018-07-31
回 txc314159 的帖子
txc314159:测试部分为什么没用,不能输东西进去。 (2018-07-31 16:33) 

并没有注册到真正的输入服务里面。
离线笑颜

只看该作者 10楼 发表于: 2018-07-31
回 txc314159 的帖子
txc314159:测试部分为什么没用,不能输东西进去。 (2018-07-31 16:33) 

为了满足你的要求,简单改了下,你下载最新的就可以输入到测试框里面了!
离线liuchangyin

只看该作者 11楼 发表于: 2018-08-08
离线xiiaoleii

只看该作者 12楼 发表于: 2018-08-09
感谢大神的分享!在windows下MIngGW的Qt5.7可以编译使用,在ubuntu 14里面可以编译,一运行就崩了。我把谷歌输入法工程单独拿出来运行的,配合demo输入一个字母,调用查询接口,可以查到中文windows qt正常运行。ubuntu qt在init这里加在词库的时候崩了,terminal called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc.
离线xiiaoleii

只看该作者 13楼 发表于: 2018-08-09
ubuntu Qt里面,编译可以了,运行的时候 bool ret = googlePinyin->init(qApp->applicationDirPath() + "/dict");这个返回的是false!所以查询不到汉字哪里需要修改么?
离线xiiaoleii

只看该作者 14楼 发表于: 2018-08-09
逐行跟踪,发现这个地方出了问题:
SpellingTrie &spl_trie = SpellingTrie::get_instance();
if(!spl_trie.load_spl_trie(fp)||省略)这句崩了!加载词库dict文件崩了!
下面是源码部分:不知道哪里有问题,毕竟谷歌的代码,不知道如何修改。
const SpellingTrie* SpellingTrie::get_cpinstance() {
  return &get_instance();
}

SpellingTrie& SpellingTrie::get_instance() {
  if (NULL == instance_)
    instance_ = new SpellingTrie();

  return *instance_;
}
离线xiiaoleii

只看该作者 15楼 发表于: 2018-08-09

这个异常查了资料,据说是频繁的new和delet造成的,这个代码写的也是飘逸;
bool SpellingTrie::load_spl_trie(FILE *fp) {
  if (NULL == fp)
    return false;
  if (fread(&spelling_size_, sizeof(size_t), 1, fp) != 1)
    return false;
  if (fread(&spelling_num_, sizeof(size_t), 1, fp) != 1)
    return false;
  if (fread(&score_amplifier_, sizeof(float), 1, fp) != 1)
    return false;
  if (fread(&average_score_, sizeof(unsigned char), 1, fp) != 1)
    return false;
    printf("%s","iii");

  if (NULL != spelling_buf_)
    delete [] spelling_buf_;
    printf("%s","jjj");

  spelling_buf_ = new char[spelling_size_ * spelling_num_];
  printf("%s","kkk");

  if (NULL == spelling_buf_)
    return false;
    printf("%s","lll");
  if (fread(spelling_buf_, sizeof(char) * spelling_size_,
            spelling_num_, fp) != spelling_num_)
    return false;

  return construct(spelling_buf_, spelling_size_, spelling_num_,
                   score_amplifier_, average_score_);
}
离线xiiaoleii

只看该作者 16楼 发表于: 2018-08-09
回 xiiaoleii 的帖子
xiiaoleii:这个异常查了资料,据说是频繁的new和delet造成的,这个代码写的也是飘逸;
bool SpellingTrie::load_spl_trie(FILE *fp) {
  if (NULL == fp)
    return false;
....... (2018-08-09 14:48) 

spelling_buf_ = new char[spelling_size_ * spelling_num_];这句代码有毒,哈哈!
离线icecool

只看该作者 17楼 发表于: 2018-08-17
回 xiiaoleii 的帖子
xiiaoleii:spelling_buf_ = new char[spelling_size_ * spelling_num_];这句代码有毒,哈哈! (2018-08-09 15:14) 

你好,我遇到跟你一样的问题,请问你解决了吗?
离线hejiang177

只看该作者 18楼 发表于: 2018-08-18
看起来很不错哟,学习学习
老是要密码
离线阿里木木

只看该作者 19楼 发表于: 2018-08-28
       太棒了
离线hejiang177

只看该作者 20楼 发表于: 2018-08-29
兄台,这个能移植到嵌入式ARM平台上
老是要密码
离线liudianwu

只看该作者 21楼 发表于: 2018-10-17
回 xiiaoleii 的帖子
xiiaoleii:感谢大神的分享!在windows下MIngGW的Qt5.7可以编译使用,在ubuntu 14里面可以编译,一运行就崩了。我把谷歌输入法工程单独拿出来运行的,配合demo输入一个字母,调用查询接口,可以查到中文windows qt正常运行。ubuntu qt在init这里加在词库的时候崩了,terminal called after th .. (2018-08-09 09:14) 

我也有这个问题,是谷歌输入法内核的问题,解决办法就是下载Qt自带输入法的源码,然后解压出来,找到谷歌输入法内核文件夹中同名的所有文件,全部替换即可。
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线stlcours

只看该作者 22楼 发表于: 2018-11-04
回 xiiaoleii 的帖子
xiiaoleii:spelling_buf_ = new char[spelling_size_ * spelling_num_];这句代码有毒,哈哈! (2018-08-09 15:14) 

我也碰到这个问题了,请问频繁的new和delete为什么会造成问题呢??应该怎么解决呢?
离线seejv134

只看该作者 23楼 发表于: 2019-03-11
感谢,楼主分享,最近正在找谷歌输入法的资源呢,感谢。
一名C/C++工程师,热爱编程,目前从事QT工作,以后请各位大佬多多指教。
离线fjydpf

只看该作者 24楼 发表于: 2019-03-27
不错不错,谢谢了
离线zhuling9026

只看该作者 25楼 发表于: 2019-04-03
点个赞,大佬们都好厉害
离线核心科技

只看该作者 26楼 发表于: 2019-04-03
牛逼,人类的进步就是靠大神的无私。
离线xiongchao99

只看该作者 27楼 发表于: 2019-04-11
记忆的词汇在重新启动输入法后,就丢失了
离线笑颜

只看该作者 28楼 发表于: 2019-04-12
回 xiongchao99 的帖子
xiongchao99:记忆的词汇在重新启动输入法后,就丢失了 (2019-04-11 21:54) 

你换成xyinput的那种输入引擎就可以!google没移植好!
离线xiongchao99

只看该作者 29楼 发表于: 2019-04-13
xyinput好像是用数据库实现的,不太适合我的场景,我看谷歌拼音底层好像也只是将新词、词频写入内存,并没有进一步更新词库文件.dat,请问大佬需要怎么实现文件同步更新?
离线apud

只看该作者 30楼 发表于: 2019-04-13
不错。点赞!
离线zuijiudangge

只看该作者 31楼 发表于: 2019-04-27
东西很好,对楼主表示感谢,不过发现了一个bug,中文模式下点击G再点击V程序会蹦。自己能力有限没能解决
离线笑颜

只看该作者 32楼 发表于: 2019-04-27
回 zuijiudangge 的帖子
zuijiudangge:[表情] 东西很好,对楼主表示感谢,不过发现了一个bug,中文模式下点击G再点击V程序会蹦。自己能力有限没能解决 (2019-04-27 10:01)

非常感谢指出,真没发现这个BUG.
已经修复这个BUG,更新最新代码解决问题!
离线fjydpf

只看该作者 33楼 发表于: 2019-05-09
不错,给力,
离线zxjrainbow

只看该作者 34楼 发表于: 2019-07-10
先下载保存。
离线nxc2018

只看该作者 35楼 发表于: 2019-07-29
挺炫酷的
离线netman_006

只看该作者 36楼 发表于: 2019-09-03
在哪下载呢?
离线dubuzherui

只看该作者 37楼 发表于: 2019-09-16
在哪下载呢?
电力系统Qt开发
离线笑颜

只看该作者 38楼 发表于: 2019-09-19
回 dubuzherui 的帖子
dubuzherui:在哪下载呢? [表情]  (2019-09-16 21:28) 

https://github.com/xiaoyanLG/Soft-keyboard
离线笑颜

只看该作者 39楼 发表于: 2019-09-19
回 netman_006 的帖子
netman_006:在哪下载呢?  (2019-09-03 14:00) 

https://github.com/xiaoyanLG/Soft-keyboard
快速回复
限100 字节
 
上一个 下一个