diff -Nur a/src/lib/fcitx/ime.c b/src/lib/fcitx/ime.c --- a/src/lib/fcitx/ime.c 2011-10-02 18:43:11.000000000 +0800 +++ b/src/lib/fcitx/ime.c 2011-10-06 11:31:59.037480000 +0800 @@ -244,12 +244,12 @@ return ; UT_array* imes = &instance->availimes ; FcitxIM newime; - + if (GetIMFromIMList(imes, uniqueName)) { FcitxLog(ERROR, "%s already exists", uniqueName); } - + memset(&newime, 0, sizeof(FcitxIM)); strncpy(newime.uniqueName, uniqueName, MAX_IM_NAME); strncpy(newime.strName, name, MAX_IM_NAME); @@ -414,11 +414,13 @@ } } +#if 0 /* Added by hubert_star AT forum.ubuntu.com.cn */ if (event == FCITX_RELEASE_KEY && IsHotKeySimple(sym, state) && retVal == IRV_TO_PROCESS) return IRV_DO_NOTHING; +#endif if (retVal == IRV_TO_PROCESS) { /* process key event for switch key */ @@ -981,7 +983,7 @@ { FcitxInstance* instance = (FcitxInstance*) menu->priv; ClearMenuShell(menu); - + FcitxIM* pim; UT_array* imes = &instance->imes; utarray_init(&instance->imMenu.shell, &menuICD);