⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zi8hmi.c

📁 印尼字库和输入法
💻 C
📖 第 1 页 / 共 5 页
字号:
        {
            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 + -