在做密码小键盘时,主要是得到串口数据后,如果让它在话机上显示,
经过考虑后,使用直接显示,不通过按键信息,因为如果使用按键消息函数的话,会出现话机和外挂密码小键盘两边都按键时,会死机的问题。
主要的函数是:
xino_keyext_insertchar
其中前一部分是设置输入的一些状态,如果注释掉,下方的输入法框就会存在。都设置false之后,输入法的后选框就会消失。
IMEinsertChar(wcChar);p 这个是底层的输和法添加字符,用于在界面上显示,之所以使用底层的inserchar 是因为,如果使用上层一些的添加,wgui的添加就要去判断各种状态,如单行,多行等。
ZiDisplay();这个函数是在界面刷新时使用的。
在这次跟代码主要是在\iwinput\src\iwinputhmi.c
是这个文件中跟的,关于手写输入法,很多也都是在这个文件中。
还一个比较麻烦的处理就是清除键,因为是要清除不同输入框中的数据,我使用了SetKeyHandler,这主要是方便密码小键盘的清除键的注册,如果使用其它方法在底层添加代码就比较麻烦了。
void xino_set_clear_type(int type,U8 mode)
{
if (type==2)
{
SetKeyHandler(multiline_inputbox_delete_all_characters, KEY_CLEAR,KEY_EVENT_UP);
SetKeyHandler(multiline_inputbox_delete_all_characters, KEY_CLEAR,KEY_EVENT_DOWN);
}else if(type==1)
{
SetKeyHandler(singleline_inputbox_delete_all_characters, KEY_CLEAR,KEY_EVENT_UP);
SetKeyHandler(singleline_inputbox_delete_all_characters, KEY_CLEAR,KEY_EVENT_DOWN);
}else if (type==3)
{
SetKeyHandler(EMS_inputbox_delete_all, KEY_CLEAR,KEY_EVENT_UP);
SetKeyHandler(EMS_inputbox_delete_all, KEY_CLEAR,KEY_EVENT_DOWN);
}
g_input_type = type;
g_current_input_mode = mode;
}
mtk之外挂密码小键盘
最新推荐文章于 2022-02-25 18:19:43 发布