用 LAlt 替换 LWin 无法正常工作

用 LAlt 替换 LWin 无法正常工作

我的工作流程是:

  • 使用笔记本电脑键盘时,无需进行任何更改
  • 在有外接显示器的办公桌上,使用 Apple 外接键盘。运行 AutoHotKey 脚本将 LWin 替换为 LAlt。回到笔记本电脑键盘时终止 AHK 进程。

以下脚本在 Windows 10 机器上使用。

LWin & Tab::AltTab                     
LWin::Send {LAlt}                      
LAlt::Send {LWin}                      

运行脚本时出现以下问题。我使用全部小写字母来指代物理按键(例如lwin),并使用 ahk 代码来表示按键的语义(例如LWin)。

问题 1

如果活动窗口是任务管理器

应该:lalt生产LWinlwin生产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>

相关内容