首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在嵌入式操作系统设计中文输入法 02

在嵌入式操作系统设计中文输入法 02

unsigned char py[7]; //本节点的拼音字符串
  struct py_subnode *prev; //指向前一PY_SUBNODE的指针
  struct py_subnode *next; //指向下一PY_SUBNODE的指针
  unsigned char *ptrUnicode; //指向本节点对应Unicode码表的指针
  }PY_SUBNODE;

  设计中我们所参照的汉语拼音表中共有412种组合,这样系统中必须有412个PY_SUBNODE与其一一对应;系统中共建立了250个PY_NODE。建立此部分数据的工作比较繁琐,分以下5个步骤进行:
  1、 汉字按拼音进行分组,按常用程度排序,并将汉字转化为Unicode码或国标码,码型视系统要求而定;
  2、将有效拼音转换为数字键盘值组合,如拼音“cui”转为数字值“284”,这些值对应了部分PY_NODE;
  3、增加中间PY_NODE,用于表示本身无效但后续输入有效的拼音,如“b”、“c”、“don”、“dua”等节点;
  4、 将数字键组合相同的PY_SUBNODE编成链表,由某一PY_NODE中的ptrpy指针指向表头;
  5、 按数字键组合的关系,将PY_NODE组成树。
  图1中所示组织关系并不复杂,但其工作量不小,一般情况下可编写转换程序自动建立。图2为拼音输入法数据结构的一个片断。
  在改变当前PY_NODE时,一般应伴有一些显示操作,因应用不同各有差异,此处不做过多说明。
  在当前节点下,可以用某一指定控制键(如“#”键)来选择此PY_NODE下属的PY_SUBNODE以缩小汉字的选取范围。
  增加功能
  上述拼音输入法比较简单,且完成了输入法需要的基本功能。对于某些应用场合,对输入法还有更多的要求,可在上述方法的基础上进行改进实现。一些常见的要求和改进方法列举如下:
  ① 增加常用字功能
  在上述输入法中,增加常用汉字。只考虑国标码中的约7000常用汉字情况下,输入法所占用的存储空间增加14kB。
  ② 增加联想功能
  为使输入更为友好,很多输入法设有联想功能,即在输入一个汉字后,此汉字常用的后续汉字自动成为候选项由用户选择。
  ③ 笔划输入法
  笔划输入法较之拼音输入法的优势在于重码少,输入不常用汉字时也不必多次翻页查找。
  以五笔划输入法为例,通过五个按键即可输入汉字。该输入法将汉字笔划分为5种笔划,即:“一”、“丨”、“丿”、“丶”和“-”五种笔划,分别对应数字键“7”、“8”、“9”、“*”、“0”,如“你”字的组合为“丿”、“丨”、“丿”、“-”、“丨”、“丿”、“丶”。
  笔划输入法与拼音输入法的区别在于人的感觉而非机器的操作,本质上只是按键组合与汉字码表对应关系有所不同,如“你”在拼音输入法下对应“64”,而在笔划输入法下则对应“989089*”。
  ④ 关于特殊符号、英文和数字
  对于一些常用的特殊符号、英文和数字的输入,较常用的做法是将以单独的输入法实现。
  软、硬件设计
  输入法的性能优劣,更多的不是体现在算法,而是是否符合实际需求。因此它的优化工作是对前述PY_NODE和PY_SUBNODE组织的优化,如汉字次序的安排、联想功能中后序字的组织、以及操作界面的设计是否适合人们的使用习惯。因算法本身很简单,所以用C语言可实现较高的代码效率,以及较好的可移植性。
返回列表