【问题标题】:Emulating Ctrl + Spacebar + AlphabeticalKey with Autohotkey使用 Autohotkey 模拟 Ctrl + Spacebar + AlphabeticalKey
【发布时间】:2013-12-15 12:27:29
【问题描述】:

我的问题:

^space & c::
send {F2} 
send {Escape}

但它不起作用,我该如何模拟 Ctrl+Space + AlphabeticaklKey ?

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    正如我之前的演讲者所说,这并非易事。这是我的建议,它似乎工作正常:

    ^space::
        Loop {
            if(GetKeyState("c")) {
                break
            }
            if(!GetKeyState("CTRL") || !GetKeyState("SPACE")) {
                return
            }
            Sleep, 50
        }
        msgbox, You have pressed CTRL+SPACE+C
    return
    

    代码是不言自明的。当 CTRL + SPACE 被按下时,它会等待直到两者之一被释放或 C 被按下。后者触发实际功能,否则将返回。
    我实际上不太喜欢它,因为理论上它在某些情况下可能会失败(例如,当按下 CTRL + SPACE + C 并在执行到达检查 C 状态之前释放;虽然这似乎不太可能)。

    更新

    还有一种使用#If 的方法。我建议使用它,因为它更复杂和可靠。这是因为它不需要任何循环:

    #If GetKeyState("SPACE")
    ^c::Msgbox, You have pressed CTRL+SPACE+C
    
    #If GetKeyState("c")
    ^space::Msgbox, You have pressed CTRL+SPACE+C
    

    【讨论】:

    • 恕我直言,这增加了不必要的复杂性。只需使用另一个“可热键”键(例如 windows 或 alt)就可以完美地完成这项工作。
    • @ikaros45 我同意使用“本机”组合键会更容易,而且可能更不容易出错。话又说回来,OP 想组合两个非修饰键,这就是他得到的 ;)
    • 这个答案也适用于我更一般的问题:superuser.com/questions/762273/…
    • @Stenemo 欢迎您抽象出我的解决方案,并在 SU 上提出它作为答案。
    【解决方案2】:

    据我所知,您只能将两个非热键键与语法组合:

    space & c:: msgbox space and c
    

    你可以阅读here

    您可以定义两个键的自定义组合(除了操纵杆 按钮)通过在它们之间使用 &。在下面的示例中,您将持有 按下 Numpad0 然后按第二个键触发热键:

    Numpad0 & Numpad1::MsgBox 你在按住 Numpad1 的同时按下 小键盘0。 Numpad0 & Numpad2::运行记事本

    尝试在space & c & controlspace & ^c 或任何其他组合中使用控件将导致编译错误。

    我的建议是不要将这三个键组合在一起。寻找一个纯粹的热键组合或使用另一个或多或少无用的键。

    • #!c:: windows + alt + c
    • AppsKey & c::

    请记住,如果您使用普通键作为修饰符,则必须将其重新映射到自身以保留原始功能,例如使用菜单键 (appskey):

    AppsKey:: Send {Appskey}
    AppsKey & c:: ;do what you want
    

    【讨论】:

      【解决方案3】:

      实际上有几种方法可以获得帮助。首先,这种语言的作者已经转移到一个新的域ahkscript.org。欢迎在我们的论坛中提出此类问题。我今天正好在浏览这个网站,无意中看到了这个。

      如果热键后面有多行代码,则需要在其后面加上回车:

      ^space & c::
      send {F2} 
      send {Escape}
      return
      

      希望有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 2013-01-01
        • 1970-01-01
        • 2015-04-29
        • 2023-03-31
        • 1970-01-01
        • 2018-12-15
        相关资源
        最近更新 更多