How to prevent Windows XP from stealing my input Ctrl-Space which is meant for Emacs? How to prevent Windows XP from stealing my input Ctrl-Space which is meant for Emacs? windows windows

How to prevent Windows XP from stealing my input Ctrl-Space which is meant for Emacs?


Found the solution to this problem as I just experienced it. So here goes even if the question is old.

Applies to Windows 7 and maybe others. I had added Chinese, Japanese and Korean input languages as I needed these for some development. After that I removed them again via Control Panel "Change keyboards...". I removed them all in one go and closed the dialog.After this all the languages still showed in the Language bar and I had the Ctrl-Space problem.

To fix it I did the following for each language one at a time:1. Open Control Panel applet "Change keyboards..."2. Add the keyboard for the language (i.e. chinese)3. Click OK and exit control panel4. Open applet again and remove the keyboard.

The problem seems to be a bug that appears when removing multiple keyboards at the same time.


The comments under the blog Sorting it all Out (mentioned in sundar's answer) mentions this solution:

  • Open RegEdit and naviagate to HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys
  • Find the '00000070' (Chinese Traditional) or '00000010' (Chinese Simplified) key that has the values: Key Modifiers='02,c0' (Control) Virtual Key='20' (Space)
  • Replace these values with, e.g. Key Modifiers='FF,c0,00,00' and Virtual Key='FF'.
  • Log out/log back in (important).

This worked for me in Windows 7.


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.

This is for Windows 7 64-bit, 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