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

  1. Go to Start > Type in regedit and start it
  2. Navigate to HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
  3. Select the key named:
    • 00000070 for the Chinese (Traditional) IME - Ime/NonIme Toggle hotkey
    • 00000010 for the Chinese (Simplified) IME - Ime/NonIme Toggle hotkey
  4. 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).
  5. Change the first byte in Key Modifiers from 02 to 00
  6. Change the first byte in Virtual Key from 20 to FF
  7. Log off and log back on. I don't think it's necessary to restart.
  8. 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).