AutoHotkey 代码片段分享

Alt 快捷键及组合快捷键

保留 Alt 方案

很多朋友都喜欢用 Alt 作为快捷键前缀,同时又不想影响该快捷键与 Ctrl、Shift 的组合功能,比如方向快捷键。这种时候要主动判断一下这些键的状态,网上其实已经有实现该功能的代码,但是很多都不够简洁,这里给大家分享一个我自己编写,认为比较简洁的版本。

ComboKey(key)
{
    if GetKeyState("Ctrl")
        key := "^" + key
    
    if GetKeyState("Shift")
        key := "+" + key
    
    send %key%
}

; LAlt + Key
*<!i::ComboKey("{Up}")
*<!k::ComboKey("{Down}")
*<!l::ComboKey("{Right}")
*<!j::ComboKey("{Left}")
*<!u::ComboKey("{Home}")
*<!o::ComboKey("{End}")

这种写法的好处是可以保留该 Alt 键本身的功能,还可以用它来触发一些系统快捷键,比如 Alt + Tab。
但同时也带来了问题,比如在一些弹出菜单中,无法使用方向快捷键,因为 Alt 键会让菜单消失。于是我写了第二套方案。

重映射方案

#InputLevel 1
LAlt::NumpadIns

#InputLevel 0
NumpadIns & i::send {blind}{Up}
NumpadIns & k::send {blind}{Down}
NumpadIns & j::send {blind}{Left}
NumpadIns & l::send {blind}{Right}
NumpadIns & u::send {blind}{Home}
NumpadIns & o::send {blind}{End}

这个方案的思路是,先把 Alt 映射到一个平时根本不会用到的键上,然后把这个键当 Fn 键用,可以玩很多组合。不会影响和 Ctrl 等键的配合,而且在弹出菜单中也可以正常使用。

感谢阅读,Jalon 原创,转载署名,商用联系本人。

推荐阅读更多精彩内容