CTRL-Space always toggles Chinese IME (Windows 7)

All we need is an easy explanation of the problem, so here it is.

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?

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 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

Method 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

Method 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.

Method 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).

Method 5

Alternatively, for users who don’t need the additional languages and the hassle of editing the registry, go to Control Panel, Change keyboards or other input methods, Change keybords…, then under Installed services I removed all but my desired language/setup, English (Ireland).

As Chinese was removed from here, the shortcut also ceased functioning so I was able to use it in visual studio again.

Method 6

Other than what Kache answered, the trick to prevent further changes/reversions (e.g. if you accidentally attempt to change it from any Windows settings) is to simply DENY “full control” to everyone within the registry.

Dummies Step-by-Step:

  • if you are using RegEdit, right click on the “00000010” key on the left navigation tree
  • select “Permissions…”
  • for each and every “Group or user names” item, check all the boxes under the “Deny” column
  • click “OK”
  • repeat for the “00000070” key on the left navigation tree

Registry permission changes take effect immediately (try setting or resetting the IME toggle key now – it will not work). As stated in the original answer, for the actual CTRL-SPACE key to be “deactivated” (for the purposes of toggling the IME), you will need to log out and log in again.

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply