📄 zi8hmi.c
字号:
{
zi8GetParam.GetMode = ZI8_GETMODE_PINYIN;
if (!Zi8GetCandidates(&zi8GetParam))
{
zi8GetParam.GetMode = ZI8_GETMODE_BOPOMOFO;
if (!Zi8GetCandidates(&zi8GetParam))
{
bSetup = ZI8FALSE;
}
}
}
}
if (!bSetup)
{
for (i = 0; i < 3; i++)
{
switch (zi8GetParam.SubLanguage)
{
case ZI8_SUBLANG_ZH_TW:
zi8GetParam.SubLanguage = ZI8_SUBLANG_ZH_HK;
break;
case ZI8_SUBLANG_ZH_HK:
zi8GetParam.SubLanguage = ZI8_SUBLANG_ZH;
break;
case ZI8_SUBLANG_ZH:
zi8GetParam.SubLanguage = ZI8_SUBLANG_ZH_TW;
break;
}
zi8GetParam.GetMode = ZI8_GETMODE_STROKES;
if (Zi8GetCandidates(&zi8GetParam))
{
break;
}
zi8GetParam.GetMode = ZI8_GETMODE_PINYIN;
if (Zi8GetCandidates(&zi8GetParam))
{
break;
}
zi8GetParam.GetMode = ZI8_GETMODE_BOPOMOFO;
if (Zi8GetCandidates(&zi8GetParam))
{
break;
}
}
}
switch (IMEzi8GetParam.GetMode)
{
case ZI8_GETMODE_1KEYPRESS_BOPOMOFO:
case ZI8_GETMODE_BOPOMOFO:
break;
case ZI8_GETMODE_1KEYPRESS_PINYIN:
case ZI8_GETMODE_PINYIN:
break;
case ZI8_GETMODE_CANGJIE:
break;
case ZI8_GETMODE_STROKES:
default:
break;
}
switch (zi8GetParam.SubLanguage)
{
case ZI8_SUBLANG_ZH_TW:
break;
case ZI8_SUBLANG_ZH_HK:
break;
case ZI8_SUBLANG_ZH:
default:
break;
}
if (IMEsubLanguage != zi8GetParam.SubLanguage)
{
IMEzi8GetParam.SubLanguage = IMEsubLanguage = zi8GetParam.SubLanguage;
return (ZI8TRUE);
}
return (ZI8FALSE);
}
/*****************************************************************************
* FUNCTION
* IMEprocessKeyEZI_STROKE
* DESCRIPTION
*
* PARAMETERS
* keyID [IN]
* bLongPress [IN]
* timeBetweenKeyPress [IN]
* RETURNS
*
*****************************************************************************/
static IME_RETURN_CODE IMEprocessKeyEZI_STROKE(KEYID keyID, int bLongPress, int timeBetweenKeyPress)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
IME_RETURN_CODE rtnCode = IME_SKIP;
ZI8WCHAR lastFirstCandidate = IMEfirstCandidate;
ZI8BOOL bNotAllow = ZI8FALSE;
int i;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef MMI_LOW_MEMORY_PHONE
if (keyID == KEY0)
{
goto IME_EXIT;
}
#endif /* MMI_LOW_MEMORY_PHONE */
bSkipGetCandidate = ZI8FALSE;
ziNoDrawCandidateRightArrowSymbol = ZI8FALSE;
/* MTK Terry for eZi Max Length Check */
switch (keyID)
{
case KEY1:
case KEY2:
case KEY3:
case KEY4:
case KEY5:
case KEY6:
case KEY7:
case KEY8:
case KEY9:
case KEY0:
case KEYSOFTR:
if (ZiMaxLengthCheck() == ZI8FALSE)
{
IMEfirstCandidate = 0;
IMEbValidCandidates = ZI8FALSE;
bSkipGetCandidate = ZI8TRUE;
bSkipGetZHCandidate = ZI8TRUE;
IMEbValidPhonetic = ZI8FALSE;
IMEbPhoneticComfirmed = ZI8FALSE;
IMEwordCharacterCount = 0;
IMEprediction = 0;
IMEinline[0] = 0;
UI_editor_play_tone_cannot_insert();
goto IME_EXIT;
}
break;
default:
break;
}
if (bLongPress)
{
if (!IMEbValidCandidates || (!IMEfirstCandidate && !IMEelementCount))
{
if ((keyID == KEYSTAR))
{
/* IMElastProcessKeyFunc = IMEprocessKeyEZI_STROKE; */
rtnCode = IME_CONTINUE;
goto IME_EXIT;
}
}
if (IMEbValidCandidates)
{
i = 0;
switch (keyID)
{
case KEY0:
i++; /* NO BREAK */
case KEY9:
i++; /* NO BREAK */
case KEY8:
i++; /* NO BREAK */
case KEY7:
i++; /* NO BREAK */
case KEY6:
i++; /* NO BREAK */
case KEY5:
i++; /* NO BREAK */
case KEY4:
i++; /* NO BREAK */
case KEY3:
i++; /* NO BREAK */
case KEY2:
i++; /* NO BREAK */
case KEY1:
if (IMEcandCount >= ++i)
{
IMEcandIndex = i - 1;
keyID = KEYSOFTR;
break;
}
goto IME_EXIT;
}
}
else
switch (keyID)
{
case KEY1:
case KEY2:
case KEY3:
case KEY4:
case KEY5:
case KEY6:
case KEY7:
case KEY8:
case KEY9:
case KEY0:
IMEbValidCandidates = ZI8TRUE;
IMEcandIndex = 0;
IMEcandidateBuffer[0] = keyID & 0x00FF;
keyID = KEYSOFTR;
break;
}
}
switch (keyID)
{
#ifdef MMI_LOW_MEMORY_PHONE
case KEYUP:
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
if (IMEcandIndex == 0)
{
if (IMEfirstCandidate)
{
IMEfirstCandidate -= IMEzi8GetParam.MaxCandidates;
break;
}
goto IME_EXIT;
}
IMEcandIndex--;
if (bLongPress)
{
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
if (IMEfirstCandidate)
{
IMEfirstCandidate -= IMEzi8GetParam.MaxCandidates;
break;
}
goto IME_EXIT;
}
bSkipGetCandidate = ZI8TRUE;
break;
case KEYDOWN:
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
if (++IMEcandIndex >= IMEcandCount)
{
IMEfirstCandidate += IMEzi8GetParam.MaxCandidates;
}
else
{
if (bLongPress)
{
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
IMEfirstCandidate += IMEzi8GetParam.MaxCandidates;
break;
}
bSkipGetCandidate = ZI8TRUE;
}
break;
#else /* MMI_LOW_MEMORY_PHONE */
case KEYLEFT:
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
if (IMEcandIndex == 0)
{
if (IMEfirstCandidate)
{
IMEfirstCandidate -= IMEzi8GetParam.MaxCandidates;
break;
}
goto IME_EXIT;
}
IMEcandIndex--;
if (bLongPress)
{
IMEcandIndex = 0;
}
bSkipGetCandidate = ZI8TRUE;
break;
case KEYUP:
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
if (IMEfirstCandidate)
{
IMEfirstCandidate -= IMEzi8GetParam.MaxCandidates;
break;
}
goto IME_EXIT;
case KEYRIGHT:
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
if (++IMEcandIndex >= IMEcandCount)
{
IMEfirstCandidate += IMEzi8GetParam.MaxCandidates;
}
else
{
if (bLongPress)
{
IMEcandIndex = IMEcandCount - 1;
}
bSkipGetCandidate = ZI8TRUE;
}
break;
case KEYDOWN:
if (!IMEbValidCandidates)
{
goto IME_EXIT;
}
IMEfirstCandidate += IMEzi8GetParam.MaxCandidates;
break;
#endif /* MMI_LOW_MEMORY_PHONE */
case KEYSOFTL:
if (bLongPress)
{
if (IMEbValidCandidates)
{
if (IMEfirstCandidate)
{
IMEfirstCandidate = 0;
break;
}
if (IMEelementCount)
{
IMEelementCount = 0;
break;
}
IMEbValidCandidates = ZI8FALSE;
bSkipGetCandidate = ZI8TRUE;
break;
}
goto IME_EXIT;
}
if (IMEbValidCandidates)
{
if (IMEfirstCandidate && IMEelementCount != 0)
{
IMEfirstCandidate = 0;
IMEbValidCandidates = ZI8FALSE;
bSkipGetCandidate = ZI8TRUE;
IMEwordCharacterCount = 0;
IMEelementCount = 0;
IMEinline[0] = 0;
break;
}
else if (IMEfirstCandidate && IMEelementCount == 0)
{
IMEfirstCandidate = 0;
IMEbValidCandidates = ZI8FALSE;
bSkipGetCandidate = ZI8TRUE;
IMEwordCharacterCount = 0;
IMEinline[0] = 0;
break;
}
if (IMEelementCount)
{
if (--IMEelementCount == 0)
{
IMEbValidCandidates = ZI8FALSE;
bSkipGetCandidate = ZI8TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -