Monday, December 16, 2013

Disable Ctrl-Space selecting chinese IME on windows



Eclipse, Visual Studio IDE or Excel Ctrl-Space for suggestions popup conflicts with CTRL+Space for selecting Chinese (traditional) and Chinese (Simplified) IME.

  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:
原因
Excel选中行及选中列的快捷键分别是Shift+空格以及Ctrl+空格,但这两个快捷键在中文系统输入法中的用途是切换全/半角和切换输入法/非输入法。显然这两个重要快捷键在Excel中无法使用,非常影响效率。

初步尝试
在查阅Excel相关帮助后得知,Excel 2010的快捷键无法更改,虽然可以创建宏并指定快捷键的方式来达到目的,但这未免小题大做了。
另一方面,这两个快捷键并不受输入法自己控制,而是系统设置。系统对输入法快捷键的设置对话框可以如下方式找到:
方法一:右击输入法栏 -> 设置 -> 高级键设置
方法二:开始 -> 控制面板 -> 更改键盘或其他输入法 -> 更改键盘 -> 高级键设置
在这里能找到“输入法/非输入法切换”和“全/半角切换”,并更改按键顺序,但是当你点击确定或应用时,却会发现两个设置又被改回了Ctrl+Space和Shift+Space。

解决方法
解决方法是直接修改注册表相关项目。
按Win+R,运行regedit,找到HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys,分别修改其下的0000001000000011项里的键。
每个项内有三个键:Key Modifiers, Target IME, Virtual Key,意思分别是控制键(Ctrl,Alt,Shift及其组合)、适用的输入法、虚拟键(即与控制键组合的那个键)。
键值与物理键的对应关系见附表。
修改完之后不会立刻生效,调出上面提到的高级键设置,随便修改下,按应用之后就会发现自动改成了你所设置的快捷键。

依然存在的问题
虽然在系统启动或注销后重登录时,该修改有效,但如果从休眠中恢复,快捷键又会被强制改回Shift+Space等。
该问题目前仍未找到解决方法。



附表一 注册表项的功能
以下项在HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys内。
功能
00000010 输入法/非输入法切换
00000011 全/半角切换
00000012 中/英文标点符号切换
更多项说明请参见:
Simplified Chinese MSPY 3.0 IME Hot Key Registry Settings (Windows CE 5.0)
另外,00000070开始的项适用于繁体输入法,00000200开始的项用途未知。

附表二 Key Modifier的键值含义
该键的键值遵循如下规则:
      0    2    c    0    0    0    0    0
   0000 0010 1100 0000 0000 0000 0000 0000
         ^^^ ^^ 
Shift ___||| ||
  Ctrl ___|| ||
    Alt ___| ||
     Left ___||
     Right ___|

对应控制键
第1个字节
00 无控制键
01 Alt
02 Ctrl
03 Ctrl+Alt
04 Shift
05 Alt+Shift
06 Ctrl+Shift
07 Ctrl+Alt+Shift
第2个字节
40
80
c0 左右皆可
参考资料:Windows中与输入法和输入热键相关的Registry

附表三 Virtual Key的键值含义
对应虚拟键
08 退格键
09 Tab
0D 回车键
20 空格键
21 PageUp
22 PageDown
23 End
24 Home
25 左箭头
26 上箭头
27 右箭头
28 下箭头
2D Ins
2E Del
30 0
31 1
32 2
33 3
34 4
35 5
36 6
37 7
38 8
39 9
41 A
42 B
43 C
44 D
45 E
46 F
47 G
48 H
49 I
4A J
4B K
4C L
4D M
4E N
4F O
50 P
51 Q
52 R
53 S
54 T
55 U
56 V
57 W
58 X
59 Y
5A Z
70 F1
71 F2
72 F3
73 F4
74 F5
75 F6
76 F7
77 F8
78 F9
79 F10
7A F11
7B F12
BA ;/:(分号/冒号;美式键盘)
BB =/+(等号/加号)
BC ,/<(逗号/左尖括号)
BD -/_(减号/下划线)
BE ./>(句号/右尖括号)
BF //?(斜杠/问号;美式键盘)
C0 `/~(撇号/波浪号;美式键盘)
DB [/{(左方括号/左花括号)
DC \/|(反斜杠/竖线)
DD ]/}(右方括号/右花括号)
DE ‘/”(单引号/双引号)

以上并不是所有的虚拟键。完整的虚拟键列表见:Virtual-Key Codes

附表四 Excel快捷键列表
请参见以下几篇帮助。
Excel 2010 中的键盘快捷方式
Excel 2013 中的键盘快捷方式

No comments:

Post a Comment

© Chutium / Teng Qiu @ ABC Netz Group