Einfacher AutoHotKey-Eingabeverdoppler?

Einfacher AutoHotKey-Eingabeverdoppler?

Ich habe eine ziemlich einfache Idee, bei der mir AutoHotKey meiner Meinung nach helfen könnte. Im Wesentlichen möchte ich, dass beim Einfügen mit Strg-V ein zweites Strg-V übertragen wird, damit ich zweimal einfüge. In meiner Entwicklungsumgebung habe ich mehrere Tastenkombinationen so eingerichtet, dass sie Doppelanschläge verschiedener Strg-Tastendrücke sind. Daher möchte ich das Skript auch auf verschiedene andere Tasten außer Strg-V erweitern können. Dies ist jedoch mein erstes AutoHotKey-Skript und ich habe Schwierigkeiten, loszulegen, da es hier viel zu verarbeiten gibt. Danke!

Antwort1

In AutoHotkey ist das doppelte Senden einer Taste ziemlich unkompliziert.

#IfWinActive
~^v::SendInput, ^v

Einige zusätzliche Punkte:

1) Sie können festlegen, welche Programme eine doppelte Sendung erhalten oder nicht, indem Sie #IfWinActiveeinen Fensternamen, einen EXE-Namen, eine Klasse usw. für den Fenstertitel verwenden und festlegen.

2) Die Tilde in der Hotkey-Definition bedeutet, dass das Skript den ursprünglichen Tastendruck nicht daran hindert, durchzugehen. Wenn Sie die volle Kontrolle darüber haben möchten, ob der ursprüngliche Tastendruck durchgeht oder nicht, können Sie die Tilde entfernen (die den ursprünglichen Tastendruck blockiert) und ihn dann selbst zweimal senden (oder überhaupt nicht oder was auch immer Sie tun möchten, ohne dass der ursprüngliche Tastendruck registriert wird).

3) Sie können bei Bedarf eine Verzögerung hinzufügen, indem Sie die Funktion auf mehr als nur eine einzeilige Hotkey-Definition erweitern und eine ReturnAnweisung verwenden

4) Mit A_ThisHotkey können Sie denselben Code für mehrere Hotkeys verwenden.

5) Sie können bei Bedarf auch Tastenanschläge mit mehreren Modifikatoren zulassen, indem Sie einen *-Modifikator verwenden. Dies funktioniert mit dem folgenden Beispielcode möglicherweise nicht ganz richtig, Sie sollten sich dessen aber bewusst sein.

Beispiel für die oben genannten Punkte 1–4:

; this will execute the code to send duplicate keystrokes 
; for any of the hotkeys defined, in this case, a,b,c, or Ctrl+V
#IfWinActive ahk_exe notepad.exe
~a::
~b::
~c::
~^v::
    Sleep 200   ; Possibly use or adjust for reliability if needed
    SendInput % SubStr(A_ThisHotkey, 2) ; Remove tilde and send duplicate keystrokes for whichever hotkey executed
Return

verwandte Informationen