Eval / RegExp使用Autohotkey监听

时间:2012-05-14 21:19:20

标签: autohotkey

我认为这一定是可能的,但我无法在autohotkey

的任何地方的文档中找到它

我想做类似的事情:

[a-z0-9]::
SoundPlay, %A_WinDir%\Media\[\1].wav
SoundPlay *-1 

即。听取所有键a到z和0-9找到相关的wav文件(a.wav等...)并播放它。如果找不到播放默认声音。

这是不是出于AHK的联赛?我应该坚持在python中这样做吗?? 非常感谢提前

3 个答案:

答案 0 :(得分:3)

您可以使用Hotkey Command将所有可能的热键分配给标签。

这里的第一个循环使用一个技巧,将值转换为ASCII codes,进行数学运算,并将它们转换回字符。逻辑的作用类似于'a'之后的第5个字符? - 它回复'f'

#Persistent 

Loop, 26
  Hotkey, % Chr(Asc("a") + A_Index - 1), MyLabel

Loop, 10
   Hotkey, % A_Index - 1, MyLabel
return

MyLabel:
MsgBox You pressed %A_ThisHotkey%
return

答案 1 :(得分:0)

我不知道使用正则表达式指定热键的方法,但这就是我在我的一个脚本中完成它的方式:

@::
a::
b::
c::
; (all other alpha keys...)
    ; Pass key on, if not in subscription list
    If(in_edit_screen())
    {
        ; Handle caps lock
        If(GetKeyState("Capslock", "T"))
        {
            ; Send uppercase letter
            StringUpper key, A_ThisHotkey
            Send %key%
        }
        Else
        {
            Send %A_ThisHotkey%
        }
        Return
    }
    ; etc.
    Return

这是每当某个窗口被聚焦时调用的例程的一部分,但是所讨论的窗口有几种不同的模式;在其中一种模式中(由in_edit_screen标志指示),我想只传递密钥,而在另一种模式下,我希望密钥能够做一些特别的事情。 A_ThisHotkey是一个变量,它告诉例程用户实际按下了哪个键/键组合。

答案 2 :(得分:0)

为什么不启动您使用的脚本:

输入,CI_KeyVar,I L1

然后读出按下了哪个键(变量= CI_KeyVar),执行你的操作(检查ascii代码是否介于0和Z之间,因为此输入将作用于任何输入)并重新启动脚本以等待下一个按键....

出路将是触发,例如esc键,脚本停止。