2010-01-19 96 views
29

我不傻......真的。 如何在AutoHotKey中映射密钥SEQUENCE(即:Ctrl + QF)。AutoHotKey key SEQUENCE,不只是单键热键

我有按Ctrl +Q下来:

^q:: 

我甚至已经有了˚F

f:: 

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

Numpad0 & Numpad1:: 

,但它只是不会与工作:

^q & f :: 

或其任任:

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

如何实现一个按键顺序触发的东西,当这些关键之一是按Ctrl关键?我考虑使用HOTSTRING来代替,但无法解决如何在该环境中包含Ctrl字符!

回答

25

好的;答案似乎是:

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

我在过去以一种有效但又丑陋的方式处理了这个问题。我更喜欢你的方法,并将它与Progress命令结合在一起,制作出漂亮的按键顺序菜单,例如我用来启动浏览器** [这里](https://gist.github。COM/ajkerrigan/a0e54dbdd5fb3dea5113)**。感谢更好的方式! – ajk 2015-07-13 16:21:26

+1

这几个尝试后,我的CTRL键搞砸了,所以例如我不能再按ctrl-shift-escape – BornToCode 2015-08-19 15:43:13

3

或者你也可以做这样的:

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

我觉得这是一个有点比使用输入键,L1如上文更易读。

+5

&符号符号要求两个键在**相同**时间被按下。在大写字母中,OP指定“序列”,所以此答案不起作用。 – horta 2014-05-20 15:20:52

1

This catchches CTRL + F。如果Q在那个时候被阻止,您的代码将被触发。

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

OP需要一系列密钥。这个答案需要同时击键。 – horta 2014-05-20 15:22:01

5

万一有人在寻找类似的事情,但实际上要按CtrlQ + Ctrl键˚F只有如果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我的解释。