2010-01-19 115 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我的解釋。