AutoHotKey - Eine Taste gedrückt halten

AutoHotKey - Eine Taste gedrückt halten

Ich habe ein AutoHotKey-Skript, das auslösen soll, F3wenn ich die Taste gedrückt halte Ctrl, und auslösen soll, F2wenn ich die Taste loslasse Ctrl.

Mein Skript derzeit:

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

Aber wenn ich Ctrlgedrückt halte, passiert nichts. Wenn ich loslasse Ctrl, werden sowohl F3als auch gedrückt F2. Kann mir jemand sagen, wie ich das beheben kann?

Antwort1

Dieser Code bietet die gewünschte Funktionalität:

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

Antwort2

DerTastendruckDie Option für die Hotkeys scheint das zu sein, was Sie brauchen.

Hier ist der getestete funktionierende Code:

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

Ctrl Up::Send {F2}

Antwort3

über:http://www.autohotkey.com/docs/commands/Send.htm

So halten Sie eine Taste gedrückt oder lassen sie los: Setzen Sie den Namen der Taste in Klammern, gefolgt vom Wort „Ab“ oder „Auf“. Beispiel:

Send {b down}{b up}
Send {TAB down}{TAB up}
Send {Up down} ; Drücken Sie die Aufwärtspfeiltaste.
Sleep 1000 ; Halten Sie sie eine Sekunde lang gedrückt.
Send> {Up up} ; Lassen Sie die Aufwärtspfeiltaste los.

Wenn eine Taste mit der oben beschriebenen Methode gedrückt gehalten wird, wird sie nicht automatisch wiederholt, wie es der Fall wäre, wenn Sie sie physisch gedrückt halten würden (das liegt daran, dass die automatische Wiederholung eine Treiber-/Hardwarefunktion ist). Allerdings kann eine Schleife verwendet werden, um die automatische Wiederholung zu simulieren. Das folgende Beispiel sendet 20 Tabulatoranschläge:

Loop 20 {
Send {Tab down} ; Die automatische Wiederholung besteht aus aufeinanderfolgenden Abwärtsereignissen (ohne Aufwärtsereignisse).
Sleep 30 ; Die Anzahl der Millisekunden zwischen den Tastenanschlägen (oder verwenden Sie SetKeyDelay).
}
Send {Tab up} ; Lassen Sie die Taste los.

Das Wort DownTemp kann ebenfalls verwendet werden. Die Wirkung ist dieselbe wie bei Down, mit Ausnahme der Sondertasten (Strg/Umschalt/Alt/Win). In diesen Fällen teilt DownTemp nachfolgenden Sends mit, dass die Taste nicht dauerhaft gedrückt ist und losgelassen werden kann, wann immer ein Tastendruck dies erfordert. Beispielsweise würde Send {Control DownTemp}, gefolgt von Send a, einen normalen Tastendruck „a“ erzeugen, keinen Tastendruck „Strg-A“.

verwandte Informationen