
Ich habe ein kleines AutoHotKey-Skript zum Wechseln zwischen virtuellen Desktops in Windows 10 geschrieben. Ich habe diesen Code geschrieben, damit ich mit meiner eigenen benutzerdefinierten Tastenkombination zwischen Desktops wechseln kann, anstatt die Standardtastenkürzel von Windows 10 (WIN + STRG + LINKS/RECHTS) zu verwenden.
Code:
#LAlt::^#Right ; switch to next desktop with Windows key + Left Alt key
#LCtrl::^#Left ; switch to next desktop with Windows key + Left CTRL key
Dieser Code funktioniert, aber nur, wenn Sie vor dem Drücken der Tasten auf ein Fenster oder etwas anderes auf dem aktuellen Desktop klicken. Ich habe versucht, mit der Click-Funktion einen Klick zu simulieren, bevor der Desktop gewechselt wurde (was funktioniert hat), aber die Maus wurde an die Koordinaten bewegt, auf die ich geklickt habe, was offensichtlich nicht das ist, was ich will. Ich habe ein bisschen mit ControlClick herumgespielt, aber das hat nie funktioniert.
Meine Frage ist also: Gibt es eine Möglichkeit, den Fokus auf den aktuellen Desktop zu setzen, bevor ich den Befehl zum Wechseln des Desktops ausführe? Oder gibt es vielleicht eine andere Möglichkeit, den Desktop zu wechseln, ohne die standardmäßigen Win 10-Verknüpfungen zu simulieren?
Danke!
BEARBEITEN 1
Mir ist Folgendes aufgefallen: Wenn ich auf die Taskleiste klicke und DANN LWin+ LAlt/ drücke LCtrl, kann ich reibungslos hin- und herwechseln, indem ich und gedrückt halte LWinund zwischen LAltdiesen beiden Tasten wechsle LCtrl.
Wenn ich auf die Taskleiste klicke und dann LWin+ ausführe LAlt, gibt KeyHistory Folgendes aus:
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------
5B 15B d 1.91 LWin
A4 038 h d 0.31 LAlt
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
A4 038 i u 0.00 LAlt
A2 01D i d 0.05 LControl
5B 15B i d 0.02 LWin
27 14D i d 0.02 Right
27 14D i u 0.00 Right
A2 01D i u 0.01 LControl
5B 15B i u 0.02 LWin
A2 01D i d 0.01 LControl
5B 15B i d 0.00 LWin
A2 01D i u 0.00 LControl
A4 038 s u 0.00 LAlt
5B 15B u 0.06 LWin
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
(This is what I want it to do without clicking the taskbar)
Aber wenn ich EINFACH LWin+ drücke LAlt, zeigt KeyHistory, dass die Tastenereignisse nach dem Ereignis „Right Up“ enden:
VK SC Type Up/Dn Elapsed Key Window
----------------------------------------------
5B 15B d 1.91 LWin
A4 038 h d 0.31 LAlt
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
A4 038 i u 0.00 LAlt
A2 01D i d 0.05 LControl
5B 15B i d 0.02 LWin
27 14D i d 0.02 Right
27 14D i u 0.00 Right
(There should be more after this)
Das LControl Up-Ereignis wird nie ausgelöst und das scheint alles durcheinander zu bringen.
Antwort1
Manchmal, wenn Sie versuchen, Modifikatortasten (Win/Strg/Alt) zu senden und die auslösende Zeichenfolge ebenfalls Modifikatortasten enthält, müssen Sie warten, bis die auslösenden Tasten losgelassen werden. Andernfalls wirken sie sich, wie Sie feststellen, auf die Ersetzungszeichenfolge aus.
Versuchen Sie KeyWait
dies mit zu erreichen. Beachten Sie, dass wir jetzt Hotkey-Syntax anstelle von Hotstring verwenden
#LAlt:: ; switch to next desktop with Windows key + Left Alt key
KeyWait LAlt
SendInput #^{Right}
Return
#LCtrl:: ; switch to previous desktop with Windows key + Left CTRL key
KeyWait LCtrl
SendInput #^{Left}
Return
Zum Wechseln des Desktops hat das oben genannte bei mir funktioniert.
In anderen Fällen funktioniert selbst dieser Ansatz nicht und es gibt eine andere mögliche Lösung. Anstatt Schlüsselwartezeiten wie diese...
KeyWait LAlt
KeyWait LCtrl
… durch den entsprechenden dieser Tastenanschläge ersetzen, um den Status der Taste zu löschen:
Send,{LAlt Down}{LAlt Up}
Send,{LCtrl Down}{LCtrl Up}
Antwort2
Falls ich nicht irgendwo etwas übersehen habe, wechselt Windows + ctrl+ ←/ →Pfeil nicht zwischen Desktops? Zumindest bei mir ist das so.
Antwort3
Ich weiß nicht, ob es noch relevant ist, aber „pzone“ von Reddit hat ein Skript geschrieben, das eine Funktion mit einer globalen Variable verwendet, die sich merkt, auf welchem Desktop Sie sich befinden, und auf diese Weise können Sie einen Hotkey zuweisen, um zwischen zwei Desktops umzuschalten. Es funktioniert nur, wenn Sie 2 Desktops haben.
switchedDesktop := false
switchDesktop()
{
global switchedDesktop
if switchedDesktop
{
SendEvent ^#{Right}
switchedDesktop := false
}
else
{
SendEvent ^#{Left}
switchedDesktop := true
}
}
https://www.reddit.com/r/AutoHotkey/comments/3fyudo/automatically_switch_between_windows_10_virtual
Antwort4
Zum Beispiel möchte ich Bild ab für den nächsten Desktop und Bild auf für den vorherigen Desktop festlegen. Nachdem ich AutoHotkey installiert habe, erstelle ich ein neues AutoHotKey-Skript, füge diese Codes hinzu, speichere es und führe das Skript aus.
PgDn::^#Right ;Next Desktop
return
PgUp::^#Left ;Previous Desktop
return
und es wird gut funktionieren :)