Autohotkey 使自动热键忽略Alt作为菜单键

Autohotkey 使自动热键忽略Alt作为菜单键,autohotkey,Autohotkey,我正在尝试使用自动热键在PC(Windows)键盘上模拟Mac键盘的元素。我的肌肉记忆达到了复制和粘贴等简单任务的命令键,因此我想将左alt+字母组合重新映射到相应的ctrl+字母 <!c::Send ^c 大多数情况下,它工作正常,但在IE和Office应用程序中的部分时间除外。当按下左Alt键时,它会与office功能区/菜单(即,菜单栏在IE中显示,或功能区字母在office 2010中开始出现)发生冲突,并且触发的ctrl+字母组合不会到达目标 我已经阅读了AHK FAQ+论坛

我正在尝试使用自动热键在PC(Windows)键盘上模拟Mac键盘的元素。我的肌肉记忆达到了复制和粘贴等简单任务的命令键,因此我想将左alt+字母组合重新映射到相应的ctrl+字母

<!c::Send ^c

大多数情况下,它工作正常,但在IE和Office应用程序中的部分时间除外。当按下左Alt键时,它会与office功能区/菜单(即,菜单栏在IE中显示,或功能区字母在office 2010中开始出现)发生冲突,并且触发的ctrl+字母组合不会到达目标


我已经阅读了AHK FAQ+论坛,尝试了两个选项,热键有$modifiers和$modifiers,但没有解决问题。有什么想法吗

听起来您需要通配符修饰符。如果您的热键与另一个键同时按下,则会出现这种情况。映射仍然有效。尝试以下方法:

*LAlt::LCtrl
这将使任何Alt+键组合的Alt-fire Ctrl键生效。

使用

LAlt::LCtrl
LAlt::LCtrl
这将用
LCtrl
使用取代
LAlt

LAlt::LCtrl
LAlt::LCtrl
将其放入一个ahk文件中编译并运行具有管理员权限的.exe

右键单击->以管理员身份运行


我在Windows 7上测试了它,它可以工作,LAlt不再在任何地方发射,它完全被LCtrl取代。

您也可以交换这两个按钮

比如:

LAlt::LCtrl
LCtrl::LAlt

在我做的有限测试中,它可以工作,但您可能需要重新学习一些窗口键快捷方式。它基本上只是交换两个按钮。

我担心IE的行为与大多数其他应用程序不同。 你可以试试下面的说明。这不是自动热键,而是regedit更改。 B.t.w.我已经检查了扫描码是否有效(LAlt为SC38),但IE仍然忽略了这一点

不确定这是否适用于Vista/Win7/8,但值得一看


刚刚在Win-7上检查了这一点,它可以工作,即使使用IE

00 00 00 00 00 00 00 00 03 00 00 00 1d 00 38 00 38 00 1d 00 00 00 00 00 00
这是swapctrlt.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,03,00,00,00,1d,00,38,00,38,00,1d,00,\
  00,00,00,00,00

这将防止左侧Alt键激活大多数应用程序的菜单栏(在Windows 7和AutoHotkey 1.1.11.01下):

它不适用于Internet Explorer,但我不经常使用IE

顺便说一句,我还通过以下方式消除了恼人的开始菜单弹出窗口:

~LWin Up:: return
~RWin Up:: return

很抱歉报告说这没用。例如,当我按下Alt键时,IE菜单栏仍然会闪烁,并且会吃掉Ctrl+组合键。在我看来,我需要一种方法,让Windows在Alt键按下后立即停止识别它,并且只在它被完全按下和按下后才能识别整个组合键。啊,我确实看到了这种行为。将Alt映射为Return将禁用它,但一旦添加了另一个组合,Alt将激活菜单。我尝试了一些方法,但无法找到解决方案。请参阅我对Elliot DeNolf的答案的评论-这并不能解决我遇到的问题。“以管理员身份运行”似乎可以解决映射问题,但它太全局化了-我丢失了重要的Windows快捷方式,如Alt Tab。你知道我所做的那些更具体的快捷键会起什么作用吗?在热键前面加上波浪号会使情况更糟-现在alt正常工作,即alt+V在IE中打开“视图”菜单,而不是粘贴剪贴板。也许我做错了什么?脚本中的相关行现在看起来如下:
~请阅读以下内容:。你有两个选择,要么让alt作为ctrl键工作,要么不作为ctrl键工作,计算机不知道何时激活alt或ctrl键,如果你想为特定的组合使用单独的函数,你必须对其进行编码。阅读文档,尝试一下,编写一些代码,如果没有帮助,就发布一个关于某个特定问题的问题。感谢你的回答,他们应该得到一个信息丰富的投票,但我不能真的奖励。与其他建议全局交换alt和ctrl的方法一样,我以这种方式丢失了重要的Windows快捷方式,例如alt Tab,这就是为什么我想用AHK来实现这一点。否则,用ctrl(或任何其他键)交换alt可以通过GUI实用程序KeyTweak来完成,我已经知道了。仅供参考,我检查了Send、{vkA4sc038}和Send、{vkA2sc01D}是否有效,但即使禁用alt::Return和ctrl::Return,IE仍会继续响应,因为它直接查看低级扫描代码,所以只有一个直接控制扫描代码的程序(或注册表)会解决这个问题。“当然,如果这个答案解决了你的问题,请考虑接受It不是我写的帖子。”