【问题标题】:Eval / RegExp listen with Autohotkey使用 Autohotkey 监听 Eval / RegExp
【发布时间】:2012-05-16 19:33:41
【问题描述】:

我认为这一定是可能的,但我在 autohotkey 的任何地方的文档中都找不到它

我想做这样的事情:

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

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

这是否超出了 AHK 的范围?我应该坚持在python中这样做吗??! 非常感谢提前

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

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

    这里的第一个循环使用了一个技巧,将值转换为它们的ASCII codes,进行数学运算,然后将它们转换回字符。逻辑的工作原理类似于,'a' 之后的第 5 个字符是什么?” - 它会回复 'f'。 p>

    #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
    

    【讨论】:

      【解决方案2】:

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

      @::
      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 是告诉例程用户实际按下了哪个键/键组合的变量。

      【讨论】:

      • 已编辑。我忘了注意我单独列出了每个字母。
      【解决方案3】:

      为什么不在你使用的地方启动一个脚本:

      输入,CI_KeyVar,I L1

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-31
        • 2021-05-23
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        相关资源
        最近更新 更多