中文拼音输入 - MTTTM/vue-keyboard-cn GitHub Wiki
中文拼音输入
这里的中文输入的处理方法是,导入常见的中文拼音组合,根据用户的输入来做匹配。 用户只能单个字选择,而不能直接输入一个词(接着看,下面会有更详细的说明)
用户输入场景展示
输入一个拼音,例如a
- 拿到词库里面a对应的所有可选字提供给用户选择,用户点击
待选字后,给input发起输入事件。结束 - 如果用户没有点击
待选字,而是点击了回车键,那给input发起输入a的事件。结束 - 如果用户切换其他键盘,例如数字键盘,英文键盘,直接放弃当前输入,清除字符串a
输入多个辅音字母,例如:hh
- 会调用分词函数,去拿到匹配的,得到[h,h]数组,
待选字区域显示第一个h匹配的待选字,用户选择待选字后,- 把第一个h替换为已选的
待选字并展示 待选字区域展示第二个h的待选字- 最后一个h的待选字选中后,把已选的所有待选字填入input,并且清掉hh
- 把第一个h替换为已选的
- 同”输入一个拼音“的2
- 同”输入一个拼音“的3
输入有效的拼音组合,例如:nihao
- 会调用分词函数,去拿到匹配的,得到[ni,hao]数组,
待选字区域显示第一个ni匹配的待选字,用户选择待选字后, a.把第一个ni替换为已选的待选字并展示 b.待选字区域展示第二个hao的待选字 c.最后一个hao的待选字选中后,把已选的所有待选字填入input,并且清掉nihao - 同”输入一个拼音“的2
- 同”输入一个拼音“的3
输入hnihaoy
- 得到[h,nihao,y],处理方式如上面的情况一样
- 同”输入一个拼音“的2
- 同”输入一个拼音“的3
- 如果用户已经选择了部分
带选词,例如[哈,你好,y],这时候回车会给input发起输入"哈你好y"的事件
热词记录
- 热词是针对词的,如果用户输入的是单个字,不会被记录
- 产生热词记录的场景,如”输入有效的拼音组合“步骤,点击hao的待选字后,会在本地存下来,并且记录 {"nihao":"你好",order:0}
- 下一次如果输入”nihao“ 用户选中的也是”你好“的话,order会+1
- 如果下一次输入"nihao",用户选中的不是"你好",那它就会产生一条新的记录
- 热词每七天清理一次order小于等于2的记录
词输入
- 这里的词输入是和热词记录有关系的
- 拿用户的输入拼音和热词库做匹配,如果有匹配到的(用户输入内容和热词库的key完全一样才有效),截取order大于0并且order排在前三的显示在待选区
- 用户选中词后,给input发起输入事件,接着情况当前用户输入