https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2d31b06c67901db77b34a…
commit 2d31b06c67901db77b34a9207b8b6313d8720279
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Fri May 5 17:00:05 2023 +0900
Commit: GitHub <noreply(a)github.com>
CommitDate: Fri May 5 17:00:05 2023 +0900
[NTUSER] Remember old KL for Chinese IMEs (#5266)
The Chinese user uses Ctrl+Space key combination to switch between the IME keyboard
and the non-IME keyboard. To enable Ctrl+Space, the system has to remember the previous
keyboard layout. In IntImmActivateLayout function, remember the previous keyboard layout
(hklPrev) to switch back for Chinese IMEs. CORE-18950
---
win32ss/user/ntuser/kbdlayout.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/win32ss/user/ntuser/kbdlayout.c b/win32ss/user/ntuser/kbdlayout.c
index f3971cf5c67..ef66cad9ddc 100644
--- a/win32ss/user/ntuser/kbdlayout.c
+++ b/win32ss/user/ntuser/kbdlayout.c
@@ -650,14 +650,21 @@ IntImmActivateLayout(
co_IntSendMessage(hImeWnd, WM_IME_SYSTEM, IMS_ACTIVATELAYOUT,
(LPARAM)pKL->hkl);
UserDerefObjectCo(pImeWnd);
}
- else if (pti->spDefaultImc)
+ else
{
- /* IME Activation is needed */
- pti->pClientInfo->CI_flags |= CI_IMMACTIVATE;
+ /* Remember old keyboard layout to switch back for Chinese IMEs */
+ pti->hklPrev = pti->KeyboardLayout->hkl;
+
+ if (pti->spDefaultImc)
+ {
+ /* IME Activation is needed */
+ pti->pClientInfo->CI_flags |= CI_IMMACTIVATE;
+ }
}
UserAssignmentLock((PVOID*)&(pti->KeyboardLayout), pKL);
pti->pClientInfo->hKL = pKL->hkl;
+ pti->pClientInfo->CodePage = pKL->CodePage;
}
static VOID co_IntSetKeyboardLayoutForProcess(PPROCESSINFO ppi, PKL pKL)