2016-04-21 63 views
0

如何设置autohotkey以便重复键盘上的密钥?下面是它的幼稚版本:在autohotkey中重复numlock密钥

{ 
keys = 23456790.-+/* ; all the keys you want to accelerate 
Loop Parse, keys 
    Hotkey *%A_LoopField%, KEY 
Return 

KEY: 
    StringRight key, A_ThisHotKey, 1 
    t := 0.11   ; initial delay [seconds] 
    Loop { 
     Send {BLIND}{RAW}%key% 
     KeyWait %key%, T%t% 
     If ErrorLevel = 0 
     Break 
     t := t > 0.12 ? t*0.79 : 0.115 ; delay *= 0.80, while delay > 0.02 
    } 
return 
} 

我曾希望,只是更换“2”和“{} NUMPAD2”(以及类似的其他插槽)会做的伎俩,但事实并非如此。

+0

你应该改变你的方法。不要从字符串中提取数字,请按照原样处理热键。所以不要发送2而不是Numpad2,但只发送Numpad2。我不认为KeyWait是必要的。只需要一个计时器来测量时间,如果时间到了,就发送一个密钥。 – 2501

回答

1

这似乎是工作

$Numpad0:: 
$Numpad1:: 
$Numpad2:: 
$Numpad3:: 
$Numpad4:: 
$Numpad5:: 
$Numpad6:: 
$Numpad7:: 
$Numpad8:: 
$Numpad9:: 
$NumpadDot:: 
$NumpadSub:: 
$NumpadMult:: 
$NumpadDiv:: 
$NumpadDel:: 
$7:: 
$8:: 
$9:: 
$0:: 
StringReplace, ThisKeyLabel, A_Thishotkey, $ 
While GetKeyState(ThisKeyLabel,"P") 
{ 
    Random, r, 10, 30 
    sleep r 
    Send % "{" . ThisKeyLabel "}" 
} 
return 
+0

大多数互联网帖子都缺少的关键是{和}的预先和追加。 – ragerdl

+1

您也可以使用A_TickCount而不是睡眠来衡量是否已经到了发送密钥的时间。 – 2501

+0

而不是十几个热键,并且放置在'loop'中的'input'可能适合你 – Blauhirn