• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 作文范文 > 正文

    【基于数字小键盘的《中文字元输入法》研究与实现】 百度输入法数字小键盘没了

    时间:2020-03-11 07:36:25 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:该文通过对汉字的字形结构和笔画特点的分析和比较,提出一种将汉字分成字元,并将字元合理分布到小键盘的0-9键中,利用小键盘进行中文输入的思路和方式;特别适用于广大没有学过拼音、不了解阿拉伯字母的中老年朋友或需要单手录入的财务人员进行中文输入;同时也本文的思路也可以应用于大部分具有数字键盘的设备的汉字输入。
      关键词:字元;中文输入法;数字小键盘;C++;IME;字库
      中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2011)35-0000-0c
      
      Based on Small Digital Keyboard“Chinese Character Input Method” Research and Implementation
      LIU Zheng-biao1,2
      (1. Jiangnan University,Content Networking Engineering Institute,Wuxi 214122,China ;2.Wuxi Teachers’College, Wuxi 214072,China)
      Abstract: This article through to the Chinese characters structure and stroke characteristics analysis and comparison, the Chinese characters into the character, and the character and reasonable distribution to the small keyboard of the 0-9 key, using the small keyboard to input Chinese character ideas and methods; particularly applicable to general not learned Pinyin, don"t understand the Arabia letter in old friends or one hand entry of financial personnel Chinese input; at the same time this paper can also be applied to most of the equipment with digital keyboard input of Chinese characters.
      Key words: character; Chinese input method; digital small keyboard; C + +; IME; font
      随着计算机对人们生活的影响,越来越多的人,特别是中老年人,都不可避免的要接触到计算机,并利用计算机进行汉字的录入工作,但是,大部分的中老年人没有学过拼音和英文,因而对电脑键盘上的26个英文字母非常陌生,而现在大部分的汉字输入法都是基于26个英文字母的全键盘来编码的,这就大大加大了中老年人学习汉字输入的难度和热情,本文对计算机汉字输入法的规则和小键盘汉字输入的规律进行研究,提出一种基于数字小键盘的形码中文输入法和输入法的软件实现。
      1编码方式与输入法设计思路
      1.1 编码方式
      经过前期对汉字结构和众多汉字输入法的比较研究后发现,在设计组成汉字的字元时,不但要考虑到字元的部首,还要考虑到字元的形,因此本中文字元输入法根据组成汉字的字元的使用频率和记忆特点,将部首和字形进行合理提取,称为“字元”,并分布到0-9数字键中。
      按照国家规定的笔画顺序,不要考虑读音,也不要任何辅助符号,根据组字规则取码,其优点是记忆量小,不会忘记。所有汉字笔形只分10类,每类笔形相似或相近,“横、竖、撇、点、折”按照国家“语委”的规定分别用“1、2、3、4、5”为代码,称为“基准字元”。为了大量减少同码字,又设置了“特例、交叉、对合、开口、包围”,分别用“6、7、8、9、0”为代码,称为“扩展字元”, “基准字元”按书写顺序取码;“扩展字元”则必需整体取码,不能分拆成单笔画。如;“中”字,打“02”,不打“2512”。“夫”打“74”,不打“1134”。
       1.2 输入法设计思路
      中文字元输入法设计的目的就是为了充分利用数字小键盘,提高输入速度,因此在设计本输入法时着重考虑如下几个方面:
      1) 提供词组输入功能,具体规则为:双字词取每个词的前两个字元编码;三字词取前两个字和第一个字元编码和第三个字的前面两个编码;四字词每个汉字取一个编码;多字词和整句取前三个字的第一个字元编码和最后一个字的第一个编码。
      2) 提供造词和整句输入的功能,对于经常用到的词或整句,可以利用造词功能加入到用户词库中,方便下次输入。
      3) 提供自动调频功能,对于经常输入的重码字要以按选择的频率自动调整到候选列表的前部。
      2 代码设计与实现
      2.2 界面实现
      界面实现主要采用windows api编程,借签当前比较流行的输入法,力求界面清新,简单易用。输入法主界面如图:
      2.3 字词库的设计与使用
      2.3.1 字词库设计思路
      字库的设计关系到输入法运行时的检索效率,为了加快编码到字词的检索速度,本输入法采用二进制文件的格式存放字库,采用文本文件存放的原始码表通过专门的转换工具转换为二进制编码格式的字库文件,供输入法检索使用。在词组的编码上,也是采用专门的工具根据中文字元输入法的编码规则,将词组文件转化为二进制的词组编码,这样既可以提高字词的检索速度,也将低了编程的复杂度。
      2.3.2 字词库的加载、检索与使用
      Windows系统中的输入法编程主要是编写一个由操作系统调用的DLL程序。输入法是个DLL动态链接库,因此和普通的DLL程序一样,由DLLMain的入口程序BOOL WINAPI DllMain (HINSTANCE hInstDLL,DWORD dwFunction,LPVOID lpNot)启动程序的执行。当dwFunction参数的值为DLL_PROCESS_ATTACH时,输入法开始启动。这时可以做一些输入法的初始化工作,而在本输入法中,字词库的加载就在这里进行,字词库的存放主要用双端队列deque来实现,支持随机访问和快速插入删除。代码如下:
      
      void ZYIMEManage::LoadLibHasKey(){
       delete g_pLibWordPhrase;
       delete m_pKeyGetter;
       TCHAR strHasKey[2][MAX_PATH] = {
       FILE_HAS_KEY_2,
       FILE_HAS_KEY_1,
       };
       wstring fileName = ZYIMEUtils::BuildPathW(strHasKey[g_pSettings->GetInputMode()]);
       g_pLibWordPhrase = new ZYIMELibHasKey(fileName);
       // 加载普通词库,用于造词时查找编码
       m_pKeyGetter = new ZYIMEKeyGetter(ZYIMEUtils::BuildPathW(L"key.tab"));
      }
      
      2.3.3 造词与整句输入的实现
      本输入法还实现了自动造词与整句输入的功能,当用户需要经常使用某些组词或短句时,可以使用造词的功能向系统词库中增加自定义的词组和短句。
      用户选中需要增加到系统中的词组或短句后,点击输入法中的词图标,出现造句窗口,系统会自动将用户选择的语句复制到窗口中,并根据编码规则自动算出编码,点击增加按钮,即可完成增加词组或语句,实现部分代码如下:
      
      /* 词库中增加词 */
      bool ZYIMELib::AddPhrase(wstring key, wstring phrase){
       if (m_items[key].InsertValue(phrase)) {
       needWriteBack = true;
       return true;
       }
       return false;
      }
      
      
      2.4 联想功能的实现
      当用户输入一个字以后,输入法会根据用户的输入作合理的联想,自动给出与之匹配的词组,对应部分代码如下:
      
      /* 词组联想 */
       if (isMagic){
       if (g_pSettings->IsImagine()){
       ReQuery();
       IMEComp();
       if (GetResult().GetTotalCount() == 0) {
       ClearInput();
       ChangeStatus(STATUS_WNE);
       }else{
       ChangeStatus(STATUS_WE);
       }
       }
       }else{
       ClearInput();
       ChangeStatus(STATUS_WNE);
       }
       break;
      
      2.5 自动调频的实现
      输入法会记住用户在有重码时选择的那个词,自动把常用的这个词移动了候选框的最前面,实现方法就是把选中的词组调整到队列的最前端,代码如下:
      
      void ZYIMENavigate::ToggleCand(int index){
       //如果选择的内容不是第一个,则调整该选择项到第一个
       if (m_currIndex + index > 0 && m_pLib){
       m_pLib->ToggleCand(m_key, GetCandStrAt(index));
       }
      }
      
      3 总结
      输入法的编程要考虑到界面的易用性,功能的丰富性,检索的效率等各方面的问题,本文只是简单的探讨了一种基于小键盘的形码的中文输入法的实现,很多功能尚须完善,不过笔者相信解决了字库和编码方法这两个主要问题后,后期开发出像谷歌输入法一样功能强大的输入法也只是时间问题了。

    推荐访问:小键盘 中文 输入法 基于数字小键盘的《中文字元输入法》研究与实现 基于数字小键盘的 电脑知识与技术2011第35期

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章