From 4b1696ced320360c8490d453ca407145b4ed0f4e Mon Sep 17 00:00:00 2001 From: Ouchihao Date: Fri, 4 Sep 2026 16:32:12 +0800 Subject: [PATCH] fix(tsf): pass application modifier shortcuts through --- src/Key/KeyEventSink.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Key/KeyEventSink.cpp b/src/Key/KeyEventSink.cpp index ef0cb720..747fccfd 100644 --- a/src/Key/KeyEventSink.cpp +++ b/src/Key/KeyEventSink.cpp @@ -711,6 +711,15 @@ BOOL CMetasequoiaIME::_IsKeyEaten( // return TRUE; } + // Other Ctrl/Alt/Windows combinations belong to the application. + // IME-owned shortcuts are handled before this normal key classifier. + if ((shortcutModifiers & 0b00000110u) != 0 || + (GetAsyncKeyState(VK_LWIN) & 0x8000) != 0 || + (GetAsyncKeyState(VK_RWIN) & 0x8000) != 0) + { + return isTouchKeyboardSpecialKeys; + } + const bool isComposing = freshCompositionState ? false : _IsComposing() != FALSE; const CANDIDATE_MODE candidateMode = freshCompositionState ? CANDIDATE_NONE : _candidateMode;