From 9ab829b2587c0dd616f92c85068bcb8c220b628b Mon Sep 17 00:00:00 2001 From: Qijia Liu Date: Thu, 12 Sep 2024 21:15:46 -0400 Subject: [PATCH] fix Shift+Tab normalized to Tab (#1132) --- src/lib/fcitx-utils/key.cpp | 12 +++++++----- test/testkey.cpp | 6 ++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/lib/fcitx-utils/key.cpp b/src/lib/fcitx-utils/key.cpp index b6b40c90b..f9f946253 100644 --- a/src/lib/fcitx-utils/key.cpp +++ b/src/lib/fcitx-utils/key.cpp @@ -470,6 +470,11 @@ bool Key::isVirtual() const { return states_.test(KeyState::Virtual); } Key Key::normalize() const { Key key(*this); + + if (key.sym_ == FcitxKey_ISO_Left_Tab) { + key.sym_ = FcitxKey_Tab; + } + /* key state != 0 */ key.states_ = key.states_ & KeyStates({KeyState::Ctrl_Alt_Shift, KeyState::Super, @@ -495,17 +500,14 @@ Key Key::normalize() const { if ((key.states_ & KeyState::Shift) && (((Key(key.sym_).isSimple() || keySymToUnicode(key.sym_) != 0) && - key.sym_ != FcitxKey_space && key.sym_ != FcitxKey_Return) || + key.sym_ != FcitxKey_space && key.sym_ != FcitxKey_Return && + key.sym_ != FcitxKey_Tab) || (key.sym_ >= FcitxKey_KP_0 && key.sym_ <= FcitxKey_KP_9))) { key.states_ ^= KeyState::Shift; } } } - if (key.sym_ == FcitxKey_ISO_Left_Tab) { - key.sym_ = FcitxKey_Tab; - } - return key; } diff --git a/test/testkey.cpp b/test/testkey.cpp index 1bf761b04..cfd650c95 100644 --- a/test/testkey.cpp +++ b/test/testkey.cpp @@ -74,6 +74,12 @@ int main() { FCITX_ASSERT(fcitx::Key("S").check(fcitx::Key("Shift+S").normalize())); FCITX_ASSERT( fcitx::Key("Shift+F4").check(fcitx::Key("Shift+F4").normalize())); + FCITX_ASSERT( + fcitx::Key("Shift+Tab").check(fcitx::Key("Shift+Tab").normalize())); + FCITX_ASSERT(fcitx::Key("Shift+Return") + .check(fcitx::Key("Shift+Return").normalize())); + FCITX_ASSERT( + fcitx::Key("Shift+space").check(fcitx::Key("Shift+space").normalize())); FCITX_ASSERT( fcitx::Key("Control+A").check(fcitx::Key("Control+a").normalize())); FCITX_ASSERT(fcitx::Key("Alt+exclam")