📄 ime.c
字号:
/* OUTPUTS: NONE */
/* RETURN: 成功返回TRUE,否则返回FALSE */
/*************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ===========================================*/
/* Qorse 2003-03-25 创建初始版本 */
/*************************************************************************/
BOOL ImeSetDefault(UINT kbTypeID)
{
MInputME tempIM;
/*参数有效性验证*/
if ((kbTypeID == IME_NONE) || kbTypeID >IME_MAXNUMBER )
{
return FALSE;
}
tempIM.uType = kbTypeID;
if(!ImeGetInfo(&tempIM))
{
return FALSE;
}
/*指定新的默认输入法*/
g_vSysGlobal.uImeInput = kbTypeID;
return GlobalSave();
}
UINT ImeMatchChar(UINT16 uCharType)
{
switch (uCharType) {
case EDITALLOW_NUMBER:
case EDITALLOW_ENCHAR:
case EDITALLOW_SYMBOL:
case EDITALLOW_ENTER:
case EDITALLOW_ASCII:
// case EDITALLOW_PHONE:
return IME_ENGLISH;
case EDITALLOW_SBCCASE:
return ImeGetDefault();
// case EDITALLOW_CLASS:
// case EDITALLOW_DATE:
// case EDITALLOW_TIME:
// return IME_NONE;
// case EDITALLOW_USER: // 音标输入法
case EDITALLOW_ALL:
return ImeGetDefault();
default:
return ImeGetDefault();
}
}
/*************************************************************************/
/* FUNCTION: __ResetIME */
/* DESCRIPTION:初始化输入法状态 */
/* INPUTS: NONE */
/* OUTPUTS: NONE */
/* RETURN: 消息处理函数返回值 */
/*************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ===========================================*/
/* Qorse 2003-04-8 创建初始版本 */
/*************************************************************************/
FOR_IME_ALL
VOID __ResetIME(IMEGUI_STRUCT *pApGui)
{
__InitialIME();
}
/*************************************************************************/
/* FUNCTION: _IMEDrawGraph */
/* DESCRIPTION:输入法的输入框的内容绘制 */
/* INPUTS: uType 输入法 */
/* OUTPUTS: NONE */
/* RETURN: NONE */
/*************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ===========================================*/
/* Qorse 2003-03-25 创建初始版本 */
/*************************************************************************/
VOID ImeDrawSplit();
VOID __ImeDrawInputBoxHead(UINT uType);
VOID ImeDrawIndexNum(UINT8 index,UINT uType);
//=============================================
//==========IMe 输入法切换List=================
/****************************************************************************/
/* FUNCTION: ImeSDialogHandleEvent */
/* DESCRIPTION:输入法选择列表的消息处理函数 */
/* INPUTS: handle 对话框的句柄 */
/* pEvent 消息指针 */
/* OUTPUTS: NONE */
/* RETURN: 消息处理函数返回值 */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* Qorse 2003-03-24 创建学生机(无笔点)版本 */
/****************************************************************************/
FOR_IME_ALL
VOID ImeSelectDraw( VOID);
const UINT8 g_ImeHelp[] =
{
"1. 共有八种输入法,按[上下][左右]方向键进行选择,再按[确认]键完成选择并退出输入法选择画面。\n"
"2. 英数输入法:\n"
"按键盘上的字母键即可输入,按住[SHIFT]键可切换英文大小写。\n"
"3. 拼音输入法:\n"
"3.1 采用完整的拼音输入,用26个字母键输入拼音,其中的“ü”用“v”代替。\n"
"3.2 按[空格]键切换声调,顺序为一声、二声、三声、四声、轻声(“5”表示轻声)。输入汉字的拼音,屏幕最下一行最多显示5个候选字,如果右下角显示有左右箭头,按[左右]键翻页显示另一屏候选字。\n"
"3.3 输入完拼音后,按[确认]键、[左右]方向键或[空格]键,候选汉字左上角显示出数字,按对应的数字键即可实现所选汉字的输入。\n"
"3.4 选取汉字后,如果该汉字有联想字,则屏幕底行显示联想字,继续按左上角数字键选择联想字。 \n"
"4. 五笔输入法:\n"
"4.1 这是一种以拆分汉字字形结构为特点的一种输入法,同PC上的五笔输入法。\n"
"4.2 输入全码直接显示汉字,汉字左上角显示出数字,按对应的数字键即可完成候选字的选取,输入五笔码,如果有多个对应的汉字,则屏幕底行显示所有的候选字,按对应的数字键即可实现所选汉字的输入,直接按[确认]键,可选取第一个候选字。如输入“YNKY(赢)”,按[1]或[确认]键即输入汉字“赢”。输入简码显示出所要的字时,直接按[空格]键,即可完成输入。\n"
"4.3 五笔输入法有联想字功能。 \n"
"5. 符号输入法:\n"
"5.1 键盘上没有的符号通过符号输入法输入。\n"
"5.2 选择符号输入法,按数字键选择相应的符号,如果本屏没有输入的符号,按[左右]键可显示另一行符号。选择左上角的数字键即输入符号。 \n"
"6. 部首输入法:\n"
"先输入部首的笔画数,按[确认]键,再按对应的数字键,找到需要的部首,然后输入除部首外的笔画数,再按[确认]键,显示出候选字,按对应的数字键,选取候选字。\n"
"7. 笔画输入法:\n"
"对于部首无法辨认的字可以采用笔画输入法。输入所需字的笔画数,按[确认]键,即显示出全部的候选字,找到后,按对应的数字键,即可完成输入。\n"
"8. 难检字输入法:\n"
"对于部首无法辨认的字也可采用难检字输入法。方法同上“笔画输入法”。\n"
"9. 日文输入法:\n"
"9.1 按键盘上的字母键即可输入。如输入“あ”,同按字母键“A”。\n"
"9.2 输入完日文后,按[确认]键,[左右]方向键或[空格]键,候选字左上角显示出数字,按对应的数字键即可实现所选汉字的输入。\n"
};
UINT32 ImeSelectHandleEvent(IMEGUI_STRUCT *pApGui, UINT uEvent, UINT uParam)
{
UINT16 wTmptype;
UINT16 wImetype;
if( uEvent == EVENT_INITIALIZE)
{
// ListSetCurrentLine((MList*)(pApGui+1),g_uImeSelect );
// ListSetTotalLine( (MList*)(pApGui+1), IME_MAXNUMBER );
SetGuiHelp((UINT)g_ImeHelp); //add by lichao
return 1;
}
else if((uEvent == EVENT_KEY)||(uEvent == EVENT_KEYREPEAT ))
{
switch (uParam)
{
case MVK_ENTER:
// g_uImeSelect = ListGetCurrentLine((MList*)(pApGui+1))
// + ListGetTopLine((MList*)(pApGui+1));
wTmptype = IME_SELECT_LIST[g_uImeSelect];
// ImeSetDefault(wTmptype);
MsgPost(NULL,EVENT_IME,MAKELONG(IME_ACTION_SETCURRENT,wTmptype) );
ExitAp(EXIT_CODE_NORMAL );
break;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
wImetype = uParam - '1';
wTmptype = IME_SELECT_LIST[wImetype];
if (ImeShowAbility(wTmptype))
{
g_uImeSelect = wTmptype - 1;
// ImeSetDefault(wTmptype);
MsgPost(NULL,EVENT_IME,MAKELONG(IME_ACTION_SETCURRENT,wTmptype) );
}
ExitAp(EXIT_CODE_NORMAL );
break;
case MVK_UP:
if( g_uImeSelect == 1)
{
g_uImeSelect = IME_MAXNUMBER-1;
}
else if( g_uImeSelect == 0)
{
g_uImeSelect = IME_MAXNUMBER-1-IME_MAXNUMBER%2;
}
else
{
g_uImeSelect -= 2;
}
ImeSelectDraw();
break;
case MVK_DOWN:
if( g_uImeSelect == IME_MAXNUMBER-1)
{
g_uImeSelect = 1;
}
else if( g_uImeSelect == IME_MAXNUMBER-2)
{
g_uImeSelect = 0;
}
else
{
g_uImeSelect += 2;
}
ImeSelectDraw();
break;
case MVK_LEFT:
if(g_uImeSelect >0)
{
g_uImeSelect -=1;
}
else
{
g_uImeSelect = IME_MAXNUMBER-1;
}
ImeSelectDraw();
break;
case MVK_RIGHT:
if( g_uImeSelect== IME_MAXNUMBER-1 )
{
g_uImeSelect =0;
}
else
{
g_uImeSelect += 1;
}
ImeSelectDraw();
break;
case MVK_ESC:
ExitAp(EXIT_CODE_NORMAL );
break;
default:
return 0;
}
return 1;
}
else if(uEvent == EVENT_DRAW)
{
ImeSelectDraw();
}
return 0;
}
VOID ImeSelectDrawFrame(VOID);
const UINT8 * const IMESELECTITEMNAME[] = {
"英文",
"拼音",
"符号",
"五笔",
"部首",
"笔画",
"难检",
"日文",
"手写",
"韩文"
};
VOID ImeSelectDraw( VOID)
{
UINT16 i;
GraphDisableRefresh();
GraphClearScreen();
ImeSelectDrawFrame();
GraphDrawText( IMECATALOG_HINT_TEXT_STARTX,IMECATALOG_HINT_TEXT_STARTY,0,0,"请选择输入法");
for( i = 0; i< IME_MAXNUMBER; i++ )
{
if( i == g_uImeSelect)
{
if( i%2 == 0)
{
GraphDrawIcon( IMECATALOG_ITEM_ICON_STARTX,IMECATALOG_ITEM_ICON_STARTY+(i/2)*IMECATALOG_ITEMICON_Y_INTERVAL,
0,0,MAKE_ID( IME_SELECTED_ICON ) );
GraphDrawText( IMECATALOG_ITEM_TEXT_STARTX,IMECATALOG_ITEM_TEXT_STARTY+(i/2)*IMECATALOG_ITEMTEXT_Y_INTERVAL,
0,0,(UINT8 *)IMESELECTITEMNAME[i]);
}
else
{
GraphDrawIcon( IMECATALOG_ITEM_ICON_STARTX+IMECATALOG_ITEMICON_X_INTERVAL,IMECATALOG_ITEM_ICON_STARTY+(i/2)*IMECATALOG_ITEMICON_Y_INTERVAL,
0,0,MAKE_ID( IME_SELECTED_ICON ) );
GraphDrawText( IMECATALOG_ITEM_TEXT_STARTX+IMECATALOG_ITEMTEXT_X_INTERVAL,IMECATALOG_ITEM_TEXT_STARTY+(i/2)*IMECATALOG_ITEMTEXT_Y_INTERVAL,
0,0,(UINT8 *)IMESELECTITEMNAME[i]);
}
}
else
{
if( i%2 == 0)
{
GraphDrawIcon( IMECATALOG_ITEM_ICON_STARTX,IMECATALOG_ITEM_ICON_STARTY+(i/2)*IMECATALOG_ITEMICON_Y_INTERVAL,
0,0,MAKE_ID( IME_NOSELECTED_ICON ) );
GraphDrawText( IMECATALOG_ITEM_TEXT_STARTX,IMECATALOG_ITEM_TEXT_STARTY+(i/2)*IMECATALOG_ITEMTEXT_Y_INTERVAL,
0,0,(UINT8 *)IMESELECTITEMNAME[i]);
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -