WinCE下数字键与字母键复用问题
各位大虾,项目中使用类似收集的九宫输入方式,就是从数字2-9与字母A-Z复用,每个数字对应3,4个字母。现在就是实现起来遇到了问题,想请教各位有没有什么建议。
按键输入通过功能键进行切换,现在的问题是数字键很好实现,我设定了一组键码表对应数字1-9,但是字母因为涉及多次按键按下的情况,比较麻烦。我现在的方法是建了一组码表对应每个按键的首字母,比如数字键2同时对应字母a,b,c,键码表该键对应a,按下后通过开启一个定时器,在指定时间内监测是否有新输入实现按键输入的替换。定时器我是使用waitforsingleobject等待事件发生或者超时实现的。
由于新的输入要替换之前的显示字母,所以我在按键驱动中,模拟了一次按键按下松开动作,由此产生了一个组合的输入,就是退格键加新的字母,于是在显示上,就达到按下键切换的效果。比如要输入c字母,按下时显示a,再按一次,驱动产生退格和b组合输入,退格用于删掉a,然后显示字母b,于是看到文档中的a变成了b,再按一次,产生退格和c输入,这样显示的字母就变成了c,输入完成。
测试了下,在英文输入状态下是ok的,但是当使用微软拼音的时候,就出现问题了,因为微软的全拼只能显示指定的字母,会忽视无效的组合,所以有些输入的字母会被丢弃,导致使用上述方式进行输入时会造成输入字符被误删除。比如我想输入读书的“读”字,拼音应该是d+u,首先按下按键3(d,e,f),对应输出了d,然后按下按键8(t,u,v),想按两次输出u,但是由于地一下t不被输入法接受(t不能做韵母),于是t被输入法忽略,没有显示,再按一次,由于此时产生了退格+u,于是退格就把前面的d删除了,因此显示就只有u了,输入根本无法完成。
请问各位大虾对这个问题有没有什么好建议没?是不是我的这种选择输入的方式本身就有问题?如何实现会比较好?谢谢了 WinCE 输入法
[解决办法]
我觉得应该不用退格键吧,应该用类似输入框内容被选中,再次输入后新的输入会直接替换被选中的内容的办法
[解决办法]
LZ,建议你在输入没有确定的问题,不要让输入接收对象知道
但这种要求,一般是要做成输入法才行。