最近刚接触了autohotkey这款软件,直接下载的还在alpha测试阶段的v2版本使用。v2对比v1,语法上做了不少调整,更接近高级的脚本语言了(和v1有很多不兼容的内容)。虽然个人来说如果能用powershell解决就不会用autohotkey。powershell的语法要高级很多,autohotkey主要是在快捷键映射和热字符串等等功能上有现成的api,所以这些方面还是值得一用的。
v2版本根据官网的描述,到2021年7月份就会有β测试版本,那么离正式替换现在的1.1版本也不远了。我为了自己写起来舒服,肯定还是用v2版本,不然等以后别人都换v2了,我还要花学习成本迁移原来的脚本。
现在离β测试已经没多少时间了,语法上也不会有什么太大变动了。
autohotkey这个工具之前就听说过,但是因为,没有什么明显的需求,键盘上的快捷键本身能自定义的键位不是很多。而且本身我选择的软件基本都已经有大量快捷键了,你连windows本身自带的快捷键都搞不明白,还整什么自定义?所以我最近才开始接触,但是也只是因为喜欢玩罢了。另外确实他的热字符串功能是比较方便的。
使用autohotkey以后,我们要想设置自己的快捷键,又不能跟已有的快捷键冲突。ctrl键因为有很多系统的快捷键所以就不要去动了,很容易和其他软件的快捷键冲突。alt键也是,虽然很少见到这个单独用在快捷键里面,一般是和ctrl配合的快捷键居多。但是我个人配置了mpv的快捷键在alt上,所以最好不要产生冲突。
键盘左侧区域和输入无关又比较鸡肋的键就只剩下capslock和esc了,esc因为有明确的语义,所以我一般也不会拿来作为修饰键。
最合适的果然还是capslock,本身功能比较鸡肋,一般是用在打游戏的时候让输入法不要捣乱。其他时候都是误触居多。
屏蔽capslock切换大小写的功能
因此我们只要吧capslock本来的功能屏蔽掉,就能把它当作一个不错的修饰键使用。(如果不屏蔽掉你在释放组合键的时候capslock指示灯也会跟着切来切去,你要作很麻烦的处理才能用的舒服,比如加各种时延判定之类的。与其设置长按短按,连按两下之类的逻辑,我这样直接把capslock变成修饰键,才是兼容性最强最简单的写法)
这里我使用capslock+esc替换原本capslock切换大小写锁定的功能。默认情况下都会维持在小写。
SetCapsLockState "AlwaysOff"
; 使用capslock+esc切换大写锁定
; 废除capslock直接切换大小写锁定的功能
Capslock & Esc::{
If GetKeyState("CapsLock", "T") = 1
SetCapsLockState "AlwaysOff"
Else
SetCapsLockState "AlwaysOn"
}
实现窗口置顶快捷键
另外实现窗口指定的方法也比较简单,一行代码即可
; toggle winAlwaysOnTop
CapsLock & t::{
WinSetAlwaysOnTop -1, "A"
}