我的工作流程是:
- 使用笔记本电脑键盘时,无需进行任何更改
- 在有外接显示器的办公桌上,使用 Apple 外接键盘。运行 AutoHotKey 脚本将 LWin 替换为 LAlt。回到笔记本电脑键盘时终止 AHK 进程。
以下脚本在 Windows 10 机器上使用。
LWin & Tab::AltTab
LWin::Send {LAlt}
LAlt::Send {LWin}
运行脚本时出现以下问题。我使用全部小写字母来指代物理按键(例如lwin
),并使用 ahk 代码来表示按键的语义(例如LWin
)。
问题 1
如果活动窗口是任务管理器
应该:lalt
生产LWin
,lwin
生产LAlt
行为:lalt
产生LAlt
。第一次lwin
产生LWin
(显示开始菜单)但是当第二次按下时开始菜单不会隐藏,尽管这是LWin
应该做的。
问题 2
lctrl+lalt+tab 不会产生预期的效果,其作用类似于 LAlt+Tab
应该:窗口切换器应在释放按键后保持打开状态
行为:窗口切换器选择应用程序并在按键释放后关闭
问题 3
lalt+tab 不会产生 LWin+Tab
应该:显示虚拟桌面
行为:打开开始菜单,并在扩展按钮(开始菜单的左上角)上进行邪恶选择
如何改进脚本来缓解这些问题?
答案1
也许我没有理解您帖子的细微差别......为什么您对第一个热键进行了键替换,而对后两个热键却没有进行键替换?
LWin & Tab::AltTab
LWin::LAlt
LAlt::LWin
如果您确实需要发送密钥而不是进行密钥替换,那么您可能还需要考虑处理和/或替换“Up”事件(如果它们没有被正确处理),并且发送{<Key> Down}
和{<Key> Up}
而不是仅仅发送<whatever key>
,这将执行<key> down/up
。
如果您想查看当前脚本的效果,请查看按键历史记录(从托盘菜单打开程序,然后从菜单转到按键历史记录),您可能会看到它在<key>
您不希望发生事件时发送事件,即,只要您按下它<key>
就会发送一个<down>
事件和一个<up>
事件,而不是等到您实际放开时才发送事件<key>
。