如何防止 Windows XP 窃取我用于 Emacs 的输入 Ctrl-Space?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/179119/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 05:29:41  来源:igfitidea点击:

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

windowsemacs

提问by Dean

I am learning and using Emacs. What I found annoying is that Ctrl-Space input will be stolen by Windows XP to switch the language bar instead of setting the mark in Emacs. The "language bar" is the native input languages selection such as Chinese keyboard other than English keyboard. Is there a way to temporarily prevent XP from stealing it? I have disabled the language bar from "Regional and language options" from Control Panel but the problem still exists. It doesn't happen on my Windows 2000 desktop at office but it happens on my work Windows XP laptop. Thank you very much.

我正在学习和使用 Emacs。我发现很烦人的是 Windows XP 会窃取 Ctrl-Space 输入来切换语言栏,而不是在 Emacs 中设置标记。“语言栏”是英文键盘以外的中文键盘等本地输入语言选择。有没有办法暂时防止XP窃取它?我已经从控制面板的“区域和语言选项”中禁用了语言栏,但问题仍然存在。它不会发生在我办公室的 Windows 2000 台式机上,但会发生在我的工作 Windows XP 笔记本电脑上。非常感谢。

回答by Larsdk

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.

适用于 Windows 7 和其他操作系统。我添加了中文、日文和韩文输入语言,因为我需要这些来进行一些开发。之后,我通过控制面板“更改键盘...”再次删除了它们。我一口气删除了它们并关闭了对话框。在此之后,所有语言仍然显示在语言栏中,我遇到了 Ctrl-Space 问题。

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 panel 4. Open applet again and remove the keyboard.

为了修复它,我一次对每种语言执行以下操作: 1. 打开控制面板小程序“更改键盘...” 2. 添加该语言的键盘(即中文) 3. 单击确定并退出控制面板 4.再次打开小程序并卸下键盘。

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

问题似乎是同时移除多个键盘时出现的错误。

回答by Richard C

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

博客Sorting it all Out(在 sundar 的回答中提到)下的评论提到了这个解决方案:

  • 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).
  • 打开 RegEdit 并导航到 HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys
  • 找到具有以下值的“00000070”(繁体中文)或“00000010”(简体中文)键:Key Modifiers='02,c0'(Control)Virtual Key='20'(空格)
  • 将这些值替换为例如 Key Modifiers='FF,c0,00,00' 和 Virtual Key='FF'。
  • 注销/重新登录(重要)。

This worked for me in Windows 7.

这在 Windows 7 中对我有用。

回答by Kache

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!

我已经意识到这个 Windows 错误多年了。经过大量令人不满意的解决方法和一年一两次无果而终的搜索后,我试图找到解决方案,我终于找到了

Procedure

程序

  1. Go to Start> Type in regeditand start it
  2. Navigate to HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
  3. Select the key named:
    • 00000070for the Chinese (Traditional) IME - Ime/NonIme Togglehotkey
    • 00000010for the Chinese (Simplified) IME - Ime/NonIme Togglehotkey
  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 Modifiersfrom 02to 00
  6. Change the first byte in Virtual Keyfrom 20to 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 languagesin Control Panel, unless you want to do this all over again.
  1. 转到Start> 输入regedit并启动它
  2. 导航 HKEY_CURRENT_USER/Control Panel/Input Method/Hot Keys
  3. 选择名为的键:
    • 00000070对于Chinese (Traditional) IME - Ime/NonIme Toggle热键
    • 00000010对于Chinese (Simplified) IME - Ime/NonIme Toggle热键
  4. 在右侧子窗口中,有三个子项。
    • 键修饰符指定Alt/ Ctrl/ Shift/etc 并设置为Ctrl( 02c00000)。
    • 虚拟键指定完成键并设置为Space( 20000000)。
  5. 将第一个字节Key Modifiers从更改0200
  6. 将第一个字节Virtual Key从更改20FF
  7. 注销并重新登录。我认为没有必要重新启动。
  8. 不要更改Hot keys for input languages控制面板中的 ,除非您想重新执行此操作。

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+spaceeven if changed via the GUI.

每个注册表项(看起来像一个文件夹的东西)都用于您通常会在Control Panel > Region and Language > Keyboards and Languages > Change keyboards... > Advanced Key Settings > Hot keys for input languages. 反复出现的错误是即使通过 GUI 更改,热键也会自动重置为Ctrl+ space

This is for Windows 7 64-bit, though from my research, it looks like it may work for XP and Vista as well.

这适用于 Windows 7 64 位,但从我的研究来看,它似乎也适用于 XP 和 Vista。

Sources:

资料来源:

Traditional Chinese Pocket IME Hot Key Registry Settings

繁体中文袖珍输入法热键注册表设置

Simplified Chinese MSPY 3.0 IME Hot Key Registry Settings

简体中文 MSPY 3.0 IME 热键注册表设置

回答by sundar - Reinstate Monica

The blog hereseems to be discussing this exact issue. It appears that even disabling the hotkeys from the Control Panel doesn't work - they get automagically re-enabled due to some bug in the OS.

这里的博客似乎正在讨论这个确切的问题。似乎即使从控制面板禁用热键也不起作用 - 由于操作系统中的某些错误,它们会自动重新启用。

Two solutions offered there are:

那里提供的两种解决方案是:

  • "using an alternative desktop shell such as GeoShell alleviates this issue." (Link)
  • "install one more language. I install Japanese and Chinese on an English win XP. Then, XP does not response the Ctrl-Space any more." (Link)
  • “使用 GeoShell 等替代桌面外壳可以缓解这个问题。” (链接)
  • “多安装一种语言。我在英文win XP上安装了日语和中文。然后,XP不再响应Ctrl-Space。” (链接)

回答by cjm

Go to the Regional and Language Options Control Panel. Click the Languages tab, then the Details... button. Click the Key Settings... button. Double-click each entry in the "Hot keys for input languages" list and make sure the checkboxes are not checked. (If they are, uncheck them and click Ok.)

转到区域和语言选项控制面板。单击语言选项卡,然后单击详细信息...按钮。单击密钥设置...按钮。双击“输入语言的热键”列表中的每个条目,并确保未选中复选框。(如果是,请取消选中它们并单击“确定”。)

You do not need to disable the language bar, just the hot keys.

您不需要禁用语言栏,只需禁用热键。

回答by Peter Turner

You can also change the hot key for the language bar.

您还可以更改语言栏的热键。

回答by Peter Turner

The following works for me:

以下对我有用:

There is a windows freeware AutoHotkey which let you, for example, bind F12 to Alt-a.

例如,有一个 Windows 免费软件 AutoHotkey 可以让您将 F12 绑定到 Alt-a。

Install AutoHotkey and bind C-Space to C-@.

安装 AutoHotkey 并将 C-Space 绑定到 C-@。

Binding C-Space to C-Space doesn't work.

将 C-Space 绑定到 C-Space 不起作用。

回答by Kuyo

I found thispost and it works for me on Vista.

我找到了这篇文章,它在 Vista 上对我有用。

  • open "regedit.exe" in run dialog
  • Browse the registry editor to the location: HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\
  • Now delete registry entries that with the name: 0000007x (x indicates any number)
  • 在运行对话框中打开“regedit.exe”
  • 浏览注册表编辑器到以下位置:HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\
  • 现在删除名称为:0000007x(x 表示任意数字)的注册表项

回答by Nikolay Chervyakov

The simple trick thats work for me:

对我有用的简单技巧:

Ctrl+Windows+Space

Ctrl+Windows+空格

Buttons are both in one place, so they could be pressed togather at once. And they work as Ctrl+Space

按钮都在一个地方,因此可以同时按下它们。它们用作 Ctrl+Space

回答by user3040945

Stupid way, But had many applications open on my system, so just deleted Chinese language from the General tab - Installed services. It worked!

愚蠢的方式,但是在我的系统上打开了许多应用程序,所以只是从常规选项卡 - 已安装的服务中删除了中文。有效!