在AUTOHOTKEY的使用中,不仅仅可以监听组合热键,还可以监听正常文本击键录入,这是另一种监听方式,比如依次击键jsq之后直接弹出<计算器>工具,或者依次击键sj之后直接输出135****5564的手机号码,等等,这就是autohotkey的录入击键监听,以双冒号为开头:: 因这种录入监听像极了某些作弊秘笈的用法,故由此取名为"秘笈".
前置修饰符
前置无冒号(表示组合热键监听)
就是CTRL+A写成^a::
等常见的组合,无冒号就是^a前面没有双冒号,前几章说的全是这种,故此处不再重复
前置双冒号:: (表示文本输入监听)
- 把我们之前的热键监听改成秘笈监听就是在前面加上双冒号并且折行
::china::
send 伟大的中华人民共和国
return
- 若没有折行,也没有
return
,那么这种功能就是执行的文本替换
::china:: 伟大的中华人民共和国
上面两种写法产生的效果是完全相同的在键盘上依次击键china之后,必须按下回车
或空格
或TAB键
等才会触发这个指令,这种触发一定要按下触发键,属于默认的正常触发,这个指令实际上在执行的时候,先进行5次退格,把这秘笈文本都删除然后才输入写好的文本,若要 不退格 在后面修饰符当中会讲到
秘笈瞬发(输入时瞬间触发)
这个触发无须按下回车等键,在输入完关键词的当下就会瞬间触发(瞬发符号*
)
:*:/mjsf::
MsgBox, 秘笈瞬发(输入了/mjsf直接触发)
Return
前面加入斜杠是为了不影响正常输入文字,与文字的输入区别开来,斜杠可替换为其它不常用键
可以看到这种功能用起来非常带劲,我们用一些自定义的拼音首字母即可自定义N多个秘笈触发,可以帮助快速录入文字或者是启动某个程序等等
秘笈待发(输入后等待触发符号)
如果喜欢先输入秘笈再击键回车, 可以使用这种方法
#Hotstring EndChars `t
::mjcf::
MsgBox 秘笈触发(输入mjcf后等待触发符号tab键,可替换为其它不常用键)
return
#Hotstring EndChars `t
这一行在这里是定义触发符号,这里的`t是tab键的意思,前面的点是转义符
还可以同时定义非常多的符号, 下面这种写也是可以的,空格键直接打在当中也是相当于有空格的,下面之一行代表这些符号都可以用来触发整个脚本的文本录入监听
;#Hotstring EndChars ()[]{}:;'"/\,.?!`t `n
不处理已击键的秘笈文字
符号为B0
:*B0:abcdefg:: hijklmn
也就是把退回功能关闭,可以看到刚才直接键入的abcdefg仍然保留在上面
中途匹配
符号为?
先来看一段正常的
:*:mz::中国大好人
定义了一个mz(名字)为中国大好人,那么我们不直接输入mz,而是在之前随意输入一点
可以看到mz并没有被触发,这是因为脚本里面有识别器
,默认是从开始识别,有一些符号会清空识别器,
- 重置识别器
- 方向键
- PageUp
- PageDown
- Home
- 空格键
- End
- 鼠标点击操作 若想关闭鼠标点击的清空设置可以在任意位置加上
#Hotstring NoMouse
- 略
大体上来讲会移动光标的操作都会重置识别器,重置之后识别器就被清空,所以我们在输入ddmz的时候,识别器里面就是这四个字母,所以并没有触发:*:mz::
,所以这也是我们在使用秘笈的时候要稍等注意的问题,如果我们不想过份关注识别器,想输入ddmz也触发就要用到这个符号?
,我们把这个符号加进去再看一下
:*?:mz::中国大好人
这一次就正常触发了这个指令
区分大小写
符号为C
:*C:Cine::aaddbb
我们定义了一个首字母大写的秘笈
不显示触发符
符号为O
在秘笈待发中,最后的击键符是必要的,但与此同时会把击键符一同显示出来,比如说我定义的符号为TAB键,那么它所产生的效果就是空出一段距离,在击键结束之后,触发符也被录入进来,如下图
::mystr::中国人
那么这时把O
符号加入进来
:O:mystr::中国人
原样输出
符号为R
先看这一段
:*:ok::myok{enter}
可以看到{enter}被识别成了回车键了,若是想要原样输入即加上R
符号
:R*:ok::myok{enter}
触发后清空识别器
可以看到秘笈待发当中,识别器是一个非常重要的概念
这里引用原来的一个例子,本来是按两次1才会执行,在第二次执行的时候识别器并没有被清器里面还是1,所以第二次只按一次也触发
:b0*?:11::
SendInput xx
return
那么我们就必须在执行脚本的时候清空识别器,只要带上z
符号即可
:zb0*?:11::
SendInput xx
return
大段文本括号符
符号为()
注:默认使用了R符 若要关闭请加上R0
::text1::
(
351635435431655165135135
6516516321{Enter}651651
654165{tab}635165
)
可以看到{enter}{tab}是原样输出的,要想变成回车 需要在前面加上R0
这种写法适合文本非常多的时候使用,最大大概能容纳5千多字
自动触发其它秘笈
1.触发录入
比如已经设定了一些秘笈,而在另一个秘笈中想调用它,比如触发上写过的Cine
:*:mycf::
SendInput, Cine
SendRaw %A_EndChar%
Return
这里就不演示了,这里的关键就是发送触发符号SendRaw %A_EndChar%
A_EndChar就是触发符号的内置变量,需要使用SendRaw 来发送
2.触发热键
:*:mygoto::
Gosub ^F9
Return
^F9::
SendInput, 6546516545
Return
这里触发之前的热键直接使用Gosub
后面接上热键即可
录入回车等要使用转义符
:*:ab`n::ttttt
输入a和b以及回车来急速触发,不能用{enter},要使用`t来替代
关闭该脚本所有热键
+F3::Suspend
这里使用shift+F3触发,点击之后这个脚本就被停用了,再点击一次脚本又能恢复了
使用Suspend即可