完美的一键多用函数——摩斯密码

个人认为,这个应该是最完美的一键多用的函数了。集按键次数、按键时间于一体,结合上下文快捷键使用的话,威力巨大。

个人认为,这个应该是最完美的一键多用的函数了。集按键次数、按键时间于一体,结合上下文快捷键使用的话,威力巨大。

可以自己调节按键的间隔时间。

原理:ahk有个利用settimer,shift键一键多用的函数,但是和下面这个相比就显得笨拙多了。那个的特点是设定一个如1000毫秒的时间间隔,在这个时间间隔内等待更多的按键,根据按键次数来决定执行哪一个动作;但是若是仅仅按了一次,还是要等待1000毫秒的时间。

摩斯密码的原理:按了第一个按键后,在设定的时间内如200毫秒内等待下一个键击,若是没有,则最多等待200毫秒,否则,只要在200毫秒内有新的键击,则一直不停的等待下一个。可以作为函数调用。

若是没有长时间按着,则返回0,快速按两下:返回00;

快速按1下后长按,再快速按两下后松开:返回0100,

其他以此类推。

摩斯(timeout =200){ ;by Laszo -> http://www.autohotkey.com/forum/viewtopic.php?t=16951
摩斯码=  ;极其经典的摩斯密码函数;
tout := timeout/1000
key := RegExReplace(A_ThisHotKey,"[<>\*\~\$\#\+\!\^( UP)( Down)]") ;"[<>\*\~\$\#\+\!\^( UP)]"
;~ MsgBox % key
Loop {
t := A_TickCount
KeyWait %key%
摩斯码 .= A_TickCount-t>timeout ;这里用以判断是true(1)还是false(0)
KeyWait %key%,DT%tout%
If (ErrorLevel)
Return 摩斯码
}
Return ;
}

;使用示例:
F1::
aa:=摩斯(200)
if(aa=0)
MsgBox 按了1次F1;
else if(aa="01")
MsgBox 按了1次F1后长按F1,然后松开;
else if(aa="0100")
MsgBox 快速按了1次F1后长按F1,接着快速按了两下后松开;
else
MsgBox 其他的按键情况:%aa%
return

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他教程

[教程]获取文件路径的函数

2016-11-22 20:13:15

其他案例

用ahk做一个账号密码保存功能

2016-11-24 23:23:52

7 条回复 A文章作者 M管理员
  1. 悠然生活

    赞一个先。

  2. 幸运E

    谢谢, 🙄 🙄

  3. 朱沐沐

    赞赞赞

  4. 因斯坦爱

    先赞一个吧,确实不错的哈!!! :mrgreen:

  5. 拿了桔子跑哇

    第20行应该是if(aa=”0″)吧??我快速按F1两次 他也判定我按一次。

    • hexuren

      这个代码有点问题,正确的函数https://www.autoahk.com/archives/3301

  6. 魔兽辅导员

    先赞一个吧,确实不错的哈!!! :mrgreen:

个人中心
购物车
优惠劵
有新私信 私信列表
搜索