mt2503允许多种语言输入法在不同语言环境下都能自由切换
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
在不同语言环境下多种语言输入法如何能自由切换(按#键)。如手机有英语、俄语两种语言,如何实现不管是英语还是俄语环境下,编辑界面都能
够出现英语的输入法(ABC和abc)和俄语的输入法(ru和RU)。
[SOLUTION]
For Neptune:
在文件imm.c中定位函数MMI_imm_get_available_modes,参考以下方式修改代码:
/* We get our key ready lets get the modes required */
for (index = 0; g_imeres_mode_array[index].mode != 0xff; index++)
{
if (g_imeres_mode_array[index].flags & desired_flags && (g_imeres_mode_array[index].writing_language == wlang ||
g_imeres_mode_array[index].writing_language == MMI_IMM_WRITING_LANGUAGE_ALL
#ifdef __MMI_LANG_RUSSIAN__
|| g_imeres_mode_array[index].writing_language == MMI_IMM_WRITING_LANGUAGE_RUSSIAN
#endif
))
{
if (!mmi_imm_get_dictionary_state() && g_imeres_mode_array[index].flags & MMI_SMART_MODE )
{
/* Skip Smart Mode */
}
else
{
/* Store the enum value of the mode selected */
mmi_wgui_inputs_ctxt.imodes.ga_input_mode_set[index_selected++] = g_imeres_mode_array[index].mode;
}
}
}
For Pluto:
请修改文件imm.c中函数mmi_imm_get_next_mode如下:
。
while (g_mmi_imm_curr_allowed_input_mode[index].mode_id != IMM_INPUT_MODE_NONE)
{
if (gIMEModeArray[g_mmi_imm_curr_allowed_input_mode[index].index].lang_id == g_mmi_imm_curr_writing_lang
|| g_mmi_imm_curr_allowed_input_mode[index].mode_id == IMM_INPUT_MODE_123_SYMBOLS //这句使123输入法在任何语言环境下都能使用
|| gIMEModeArray[g_mmi_imm_curr_allowed_input_mode[index].index].lang_id == IME_WRITING_LANG_ZHCN //这句使所有中文输入法在任何语言
环境下都能使用
)
{
break;
}
index++;
}
。
上述方法主要是在获取可用mode时将所有writing_language为指定语言(如俄语)的mode也添加到mmi_wgui_inputs_ctxt.imodes.ga_input_mode_set(For Neptune)或将其列为允许选择的选项(For Pluto)。对于Neptune项目来说,也可以在
imeres.c中将指定语言对应的输入法的writing_language设为 MMI_IMM_WRITING_LANGUAGE_ALL。
在不同语言环境下多种语言输入法如何能自由切换(按#键)。如手机有英语、俄语两种语言,如何实现不管是英语还是俄语环境下,编辑界面都能
够出现英语的输入法(ABC和abc)和俄语的输入法(ru和RU)。
[SOLUTION]
For Neptune:
在文件imm.c中定位函数MMI_imm_get_available_modes,参考以下方式修改代码:
/* We get our key ready lets get the modes required */
for (index = 0; g_imeres_mode_array[index].mode != 0xff; index++)
{
if (g_imeres_mode_array[index].flags & desired_flags && (g_imeres_mode_array[index].writing_language == wlang ||
g_imeres_mode_array[index].writing_language == MMI_IMM_WRITING_LANGUAGE_ALL
#ifdef __MMI_LANG_RUSSIAN__
|| g_imeres_mode_array[index].writing_language == MMI_IMM_WRITING_LANGUAGE_RUSSIAN
#endif
))
{
if (!mmi_imm_get_dictionary_state() && g_imeres_mode_array[index].flags & MMI_SMART_MODE )
{
/* Skip Smart Mode */
}
else
{
/* Store the enum value of the mode selected */
mmi_wgui_inputs_ctxt.imodes.ga_input_mode_set[index_selected++] = g_imeres_mode_array[index].mode;
}
}
}
For Pluto:
请修改文件imm.c中函数mmi_imm_get_next_mode如下:
。
while (g_mmi_imm_curr_allowed_input_mode[index].mode_id != IMM_INPUT_MODE_NONE)
{
if (gIMEModeArray[g_mmi_imm_curr_allowed_input_mode[index].index].lang_id == g_mmi_imm_curr_writing_lang
|| g_mmi_imm_curr_allowed_input_mode[index].mode_id == IMM_INPUT_MODE_123_SYMBOLS //这句使123输入法在任何语言环境下都能使用
|| gIMEModeArray[g_mmi_imm_curr_allowed_input_mode[index].index].lang_id == IME_WRITING_LANG_ZHCN //这句使所有中文输入法在任何语言
环境下都能使用
)
{
break;
}
index++;
}
。
上述方法主要是在获取可用mode时将所有writing_language为指定语言(如俄语)的mode也添加到mmi_wgui_inputs_ctxt.imodes.ga_input_mode_set(For Neptune)或将其列为允许选择的选项(For Pluto)。对于Neptune项目来说,也可以在
imeres.c中将指定语言对应的输入法的writing_language设为 MMI_IMM_WRITING_LANGUAGE_ALL。