如何将AltGr键映射到Alt键?

50
我希望我的AltGr键的行为与左侧的Alt键完全相同。
通常,我使用Autohotkey来完成这种工作,但我也接受其他解决方案。

我尝试了这个:

LControl & RAlt::Alt

然后Autohotkey显示了有关无法识别Alt动作的错误信息。
然后我尝试了以下代码:

LControl & RAlt::
  Send {Alt down}
  KeyWait LCtrl
  KeyWait Ralt
  Send {Alt up}
return

这种方式有些奏效 - 我能够使用 AltGr 键来访问热键,但它的行为仍然不同:
当我按下并释放左侧的 Alt 时,当前程序中的第一个菜单项将获得焦点。
使用此脚本按下并释放 AltGr 不起作用。

有什么想法吗?Autohotkey 能实现吗?(将右侧的 CtrlShift 重新映射到其左侧的兄弟很容易)


注意:我尝试在代码中将 Alt 切换为 LAlt,但没有任何差别。

7个回答

57

感谢大家提供的答案。我无法使用AutoHotkey解决这个问题 - PhilLho的答案很接近,但我确实需要与左侧Alt键完全相同的行为。

然而,注册表方法正好可以满足我的需求。

将其保存为AltGR_to_LeftAlt.reg文件并运行即可:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,38,00,38,e0,00,00,00,00

还有一个GUI工具可以为你完成这个操作,它叫做SharpKeys,非常好用:
SharpKeys in action

哦,别忘了重新启动或注销——否则它不会生效!


4
这个答案是错误的:SharpKeys 不支持 Alt Gr。(https://sharpkeys.codeplex.com/workitem/10375) - Nye
3
对于我的需求(将Bootcamp的“Cmd”键映射到“AltGr”键),右侧Alt键可以作为“AltGr”的替代品,唯一的区别是我需要手动从列表中选择它。“右侧Alt键通常相当于AltGr键”- http://en.wikipedia.org/wiki/AltGr_key - Andreas
5
答案正确。我已经成功地使用SharpKeys重新映射了我的Mac键盘上的左右ALT键。您需要两个映射,一个用于交换ALT键的“左<=>右”和“右<=>左”。 - nover
请问如何撤销这个操作? - Richard

8

1
由于我不应该在我的工作机器上添加软件,所以这真的很有用。在偶然发现"Is it worth swapping Ctrl and Caps..."提供的现成reg文件之前,我使用了Windows链接中的Scan Code Mapper来将Caps映射到Ctrl。 - sage

3
这对我有用:

这个方法适用于我:

LControl & *RAlt::Send {LAlt Down}
LControl & *RAlt Up::Send {LAlt Up}

这是将其映射到 Windows 键的方法:

LControl & *RAlt::Send {LWin Down}
LControl & *RAlt Up::Send {LWin Up}

使用SharpKeys进行注册表修改(见上文)更可靠,但需要管理员权限。

为什么您要映射LControlRAlt的组合键,而不是单独映射RAlt - Piotr Dobrogost
2
当您按下AltGr键时,Windows实际上会发出您同时按下了右侧Alt和左侧Ctrl键的信号。 - Dave James Miller

3
我通过组合两个热键获得了良好的行为表现:
LControl & RAlt::Send {Alt}
RAlt::Alt

第一个是用于单键按下(避免长按...),第二个则用于组合键(例如Alt+F等)。虽然不完美,但也可以满足您的需求,只是无法像Ctrl+Alt+T这样的复合键。请注意,您可以通过注册表进行永久重新映射。有关示例,请参见此论坛帖子。不确定是否适用于此类复合键,但我想提一下...

1

Windows注册表编辑器版本5.00:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,38,00,38,e0,00,00,00,00
  1. 将上述代码保存为reg文件。
  2. 将其合并到注册表中。
  3. 重新启动电脑。
  4. 现在检查。

0
在AHK中,你能做到吗:
LControl & RAlt::!

或者

<^>!::!

抱歉,但对我来说它不起作用。 第一个例子返回“无法识别的动作”错误,第二个例子根本没有任何反应。 当然,我的设置可能出了问题。在你那边工作了吗? - Tomas Sedovic
我没有这个键的信息,但在AHK文档中查找后发现<^>!是AltGr的符号。 右键单击托盘图标-->帮助-->热键 - Brian Schmitt

0

如果您想将此键全局映射,并且不需要为每次更改重新启动系统(但只需一次),则可能需要编写一个键盘过滤驱动程序来实现此目的。请查看这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接