CTRL-Space always toggles Chinese IME (Windows 7)
I am running Windows 7 Ultimate (w/ SP1), and have multiple UI languages installed - mainly for screenshots etc. Among them are Chinese (traditional) and Chinese (Simplified), which insist on hooking the CTRL+Space key even though I have disabled / overridden these hotkey assignments under Language Bar settings / Advanced key settings.
(It conflicts with CTRL+Space in the Visual Studio IDE, and is pretty annoying beyond that.)
Any ideas?
Solution 1:
I've been aware of this Windows bug for years. After tons of unsatisfying workarounds and fruitless searching the one or two times a year I attempt to find a solution, I finally have it!
Procedure
- Go to
Start
> Type inregedit
and start it - Navigate to
HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
- Select the key named:
-
00000070
for theChinese (Traditional) IME - Ime/NonIme Toggle
hotkey -
00000010
for theChinese (Simplified) IME - Ime/NonIme Toggle
hotkey
-
- In the right sub-window, there are three subkeys.
- Key Modifiers designate Alt/Ctrl/Shift/etc and is set to Ctrl (
02c00000
). - Virtual Key designates the finishing key and is set to Space (
20000000
).
- Key Modifiers designate Alt/Ctrl/Shift/etc and is set to Ctrl (
- Change the first byte in
Key Modifiers
from02
to00
- Change the first byte in
Virtual Key
from20
toFF
- Log off and log back on. I don't think it's necessary to restart.
- Do not change the
Hot keys for input languages
in Control Panel, unless you want to do this all over again.
Notes: Symptoms
Each registry key (thing that looks like a folder) is for each specific hotkey setting that you would normally find in Control Panel > Region and Language > Keyboards and Languages > Change keyboards... > Advanced Key Settings > Hot keys for input languages
. The recurring bug is the hotkey being automatically reset to Ctrl+space even if changed via the GUI.
I can personally confirm this for Windows 7 64-bit and Windows 8.1, though from my research, it looks like it may work for XP and Vista as well.
Sources:
Traditional Chinese Pocket IME Hot Key Registry Settings
Simplified Chinese MSPY 3.0 IME Hot Key Registry Settings
Solution 2:
Thanks, it worked. For reference, I exported the modified registry keys:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000010]
"Key Modifiers"=hex:00,c0,00,00
"Virtual Key"=hex:ff,00,00,00
[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000070]
"Key Modifiers"=hex:00,c0,00,00
"Virtual Key"=hex:ff,00,00,00
Solution 3:
I've just got help with an associated issue, and I guess it may be useful for many of you as well: https://www.neowin.net/forum/topic/1261058-windows-81-is-forgetting-ctrl12345-shortcuts-designated-for-keyboard-layout-switching-after-wa/
Windows seems to overwrite personal layout controls configuration with defaults on some occasions. Hence, the way to have a "permanent" solution basically appears to be rewriting your
HKEY_USERS\.DEFAULT\Control Panel\Input Method\Hot Keys
with what you have in your
HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys
once you've configured your IME shortcuts (or in this matter their absenсe) correctly.
Solution 4:
Can try editing the registry where the settings are stored directly as suggested in an answer for a similar question: How to prevent Windows XP from stealing my input Ctrl-Space which is meant for Emacs? (the answer mentions Windows 7 as well).