30

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?

Kache
  • 961
peterchen
  • 1,774

6 Answers6

49

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
  1. 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).
  1. Change the first byte in Key Modifiers from 02 to 00
  2. Change the first byte in Virtual Key from 20 to FF
  3. Log off and log back on. I don't think it's necessary to restart.
  4. Do not "Change Key Sequence..." in Hot keys for input languages, unless you want to do this all over again.

Hot keys for input languages GUI window, 'DO NOT USE' pointing to 'Change Key Sequence...'

Technical Notes

Each registry key (thing that looks like a folder) represents each Hot keys for input languages. It seems the bug is in the GUI, resetting the hotkey to Ctrl+space.

The buggy Hot keys for input languages GUI has been moved around over time.

  • Windows 8.1: Control Panel > Region and Language > Keyboards and Languages > Change keyboards... > Advanced Key Settings > Hot keys for input languages
  • Windows 11: Settings > Time & Language > Typing > Advanced keyboard settings > Input language hot keys

I can personally confirm this for Windows 7 64-bit, Windows 8.1, and Windows 11, 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

Kache
  • 961
4

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
nKn
  • 5,832
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.

Excellll
  • 12,847
eugrus
  • 33
1

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

Brian
  • 9,034
1

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.

-1

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.

reb00tz
  • 11