AutoHotKey - 按住一個鍵

AutoHotKey - 按住一個鍵

F3我有一個 AutoHotKey 腳本,當我按住時應該按下CtrlF2當我鬆開時按下Ctrl

我目前的腳本:

$ctrl::
Suspend, On
Send, {F3}
While (GetKeyState("Ctrl",P))
{
}
Send, {F2}
Suspend, Off
Return

但當我按住時Ctrl,它什麼也沒做。當我釋放時Ctrl,它同時擊中F3F2。有人可以告訴我如何解決這個問題嗎?

答案1

此程式碼提供您想要的功能:

$~ctrl::
    send {f3}
    keyWait, ctrl
    send {f2}
return

答案2

按鍵熱鍵選項似乎正是您所需要的。

這是經過測試的工作代碼:

Ctrl::
Send {F3}
keywait, Ctrl, L ; prevent F3 from firing while Ctrl is being held down.
return

Ctrl Up::Send {F2}

答案3

通過:http://www.autohotkey.com/docs/commands/Send.htm

若要按住或釋放某個鍵:將鍵的名稱括在大括號中,後面接著「Down」或「Up」一詞。例如:

發送{b down}{b up}
發送{TAB down}{TAB up}
發送{Up down} ;按下向上箭頭鍵。
睡眠1000;按住它一秒鐘。
發送> {向上} ;釋放向上箭頭鍵。

當透過上述方法按住某個鍵時,它不會像您實際按住它一樣開始自動重複(這是因為自動重複是驅動程式/硬體功能)。但是,可以使用循環來模擬自動重複。以下範例傳送 20 個 Tab 鍵擊:

Loop 20 {
Send {Tab down} ;自動重複由連續的向下事件組成(沒有向上事件)。
睡眠 30 ;擊鍵之間的毫秒數(或使用 SetKeyDelay)。
}
發送 {Tab 向上} ;鬆開鑰匙。

也可以使用“DownTemp”一詞。除了修飾鍵(Control/Shift/Alt/Win)之外,其效果與 Down 相同。在這些情況下,DownTemp 會告訴後續發送該按鍵並未永久按下,並且可以在按鍵需要時釋放。例如,發送 {Control DownTemp} 後跟發送 a 將產生正常的「a」擊鍵,而不是 Control-A 擊鍵。

相關內容