void KeyboardEngine::keyEvent(const InputMethodEntry &entry, KeyEvent &event) { // FIXME use entry to get layout info FCITX_UNUSED(entry); if (event.isRelease()) { return; } auto sym = event.key().sym(); if (sym == FcitxKey_Shift_L || sym == FcitxKey_Shift_R || sym == FcitxKey_Alt_L || sym == FcitxKey_Alt_R || sym == FcitxKey_Control_L || sym == FcitxKey_Control_R || sym == FcitxKey_Super_L || sym == FcitxKey_Super_R) { return; } auto compose = processCompose(event.key().sym(), event.key().states()); if (compose == INVALID_COMPOSE_RESULT) { event.accept(); return; } if (compose) { auto composeString = utf8::UCS4ToUTF8(compose); event.accept(); event.inputContext()->commitString(composeString); } }