【问题标题】:AutoHotKey key SEQUENCE, not just single-key hotkeyAutoHotKey key SEQUENCE,不仅仅是单键热键
【发布时间】:2011-01-06 23:08:18
【问题描述】:

我不傻……真的。 如何在 AutoHotKey 中映射一个键序列(即:Ctrl + QF)。

我已经 Ctrl + Q 下来了:

^q::

我什至得到了F

f::

帮助文件中的示例甚至显示了如何连续击键两次:

Numpad0 & Numpad1::

但它不适用于:

^q & f ::

或以下任何一种:

LCtrl & q & f::
^q & ^f::
^q^f::
^qf::

当这些键之一是 Ctrl 键时,我如何完成触发某些东西的键序列?我考虑改用 HOTSTRING,但无法弄清楚如何在这种情况下包含 Ctrl 字符!

【问题讨论】:

    标签: keyboard-shortcuts autohotkey


    【解决方案1】:

    好的;答案似乎是:

    ^q::
    Input Key, L1
    if Key=f
    ...some code here...
    return
    

    【讨论】:

    • 我过去曾以一种有效但丑陋的方式处理过这个问题。我更喜欢你的方法,并将它与 Progress 命令结合起来制作漂亮的按键序列菜单,例如我用来启动浏览器的那个 here。感谢您提供更好的方法!
    • 这在几次尝试后弄乱了我的 ctrl 键,所以例如我不能再按 ctrl-shift-escape
    【解决方案2】:

    如果有人正在寻找类似的东西,但实际上想要 CtrlQ + CtrlF 和 仅如果 Ctrl 始终保持(因此,对某些人来说,这可能看起来像 CtrlQ + F ),那么这里是如何做到这一点:

    $Ctrl::Send {Ctrl Down}
    $Ctrl UP::
        ChordIsBroken := True
        Send {Ctrl Up}
        Return
    ^q::
        ChordIsBroken := False
        Input, OutputVar, L1 M
        If (!ChordIsBroken && Asc(OutputVar) = 6)
        {
            MsgBox "Hello, World!"
        }
        Else
        {
            SendInput %OutputVar%
        }
        Return
    

    请参阅https://superuser.com/a/725303/145431 了解我的解释。

    【讨论】:

      【解决方案3】:

      或者你可以这样做:

      q & f::
          if GetKeyState("Control") {
              ; Do something
              return
          }
          return
      

      我认为这比使用上面的输入键 L1 更具可读性。

      【讨论】:

      • & 符号要求两个键同时按住。在大写字母中,OP 指定了“序列”,所以这个答案不起作用。
      【解决方案4】:

      这会捕获 CTRL+F。如果此时按下 Q,您的代码就会触发。

      ^f::
          If GetKeyState("q", "p") {
              MsgBox test
          } Else {
              Send ^f
          }
      return
      

      【讨论】:

      • OP 需要一系列键。这个答案需要同时击键。
      猜你喜欢
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      相关资源
      最近更新 更多