engine: Korean and Telex let Escape through after committing
A pending Hangul syllable is real text, and Escape is what vi users press to leave insert mode; eating it and dropping the syllable served nobody. fcitx5-hangul commits and passes any key it does not consume, Escape included; do the same for Korean and Telex. A Japanese reading is still cancelled: there Escape is the IME's own key.
This commit is contained in:
@@ -27,7 +27,9 @@ the application. `Space` on a reading without candidates commits it and
|
||||
types nothing. `Backspace` and `Esc` on a chosen candidate go back to the
|
||||
reading. In a temporary Emoji or Hanja search, `Enter` commits the
|
||||
highlighted result and `Tab`/`Shift-Tab` wrap through the results. Leaving
|
||||
the field or clicking elsewhere commits what is pending; `Esc` cancels it.
|
||||
the field or clicking elsewhere commits what is pending. `Esc` cancels a
|
||||
Japanese reading or a search; in Korean and Vietnamese it commits the
|
||||
syllable and goes on to the application, so it still leaves insert mode.
|
||||
|
||||
Hiragana mode composes a complete reading before offering Kanji candidates.
|
||||
Katakana mode does not perform Kanji conversion. Emoji and Hanja searches
|
||||
|
||||
2
strans.c
2
strans.c
@@ -704,7 +704,7 @@ transition(u32int ks, u32int mod, Str *com)
|
||||
flush(com);
|
||||
return 1;
|
||||
}
|
||||
if(ks == Ktab || ks == Kret){
|
||||
if(ks == Ktab || ks == Kret || (ks == Kesc && !isjp(&im))){
|
||||
if(!haspre(&im))
|
||||
return 0;
|
||||
flush(com);
|
||||
|
||||
@@ -66,8 +66,8 @@ vietnamese_state_lifetime(struct ct *t)
|
||||
im.pre = mkstr("as");
|
||||
im.raw = mkstr("as");
|
||||
sclear(&com);
|
||||
CT_CHECK(t, keystroke(Kesc, 0, &com));
|
||||
CT_EQ_INT(t, 0, com.n);
|
||||
CT_CHECK(t, !keystroke(Kesc, 0, &com));
|
||||
checkstr(t, "Escape commits Telex", "á", &com);
|
||||
CT_EQ_INT(t, 0, im.pre.n);
|
||||
CT_EQ_INT(t, 0, im.raw.n);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user