AutoHotKey: collegamento personalizzato per passare al desktop successivo / precedente in Windows 10


7

Ho scritto un piccolo script AutoHotKey per cambiare desktop virtuali in Windows 10. Ho scritto questo codice in modo da poter cambiare desktop con la mia scorciatoia da tastiera personalizzata invece di utilizzare la scorciatoia predefinita di Windows 10 (WIN + CTRL + SINISTRA / DESTRA).

Codice:

#LAlt::^#Right ; switch to next desktop with Windows key + Left Alt key
#LCtrl::^#Left ; switch to next desktop with Windows key + Left CTRL key

Questo codice funziona, ma solo se si fa clic su una finestra o qualsiasi altra cosa sul desktop corrente prima di premere i tasti. Ho provato a usare la funzione Click per simulare un clic prima di cambiare desktop (che ha funzionato), ma ha spostato il mouse sulle coordinate su cui ho cliccato, che ovviamente non è quello che voglio. Ho giocato un po 'con ControlClick, ma non l'ho mai fatto funzionare.

Quindi la mia domanda è questa: c'è un modo in cui posso mettere a fuoco il desktop corrente prima di eseguire il comando per cambiare desktop? O forse, c'è un modo diverso di cambiare desktop senza simulare le scorciatoie predefinite di Win 10?

Grazie!


MODIFICA 1

Una cosa che ho notato è che se faccio clic sulla barra delle applicazioni, e POI faccio LWin+ LAlt/ LCtrl, posso passare avanti e indietro senza problemi tenendo premuto LWine alternando tra LAlte LCtrl.

Quando faccio clic sulla barra delle applicazioni e poi faccio LWin+ LAlt, questo è ciò che KeyHistory sputa:

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)

Ma quando ho appena premuto LWin+ LAlt, KeyHistory mostra che gli eventi chiave si fermano dopo l'evento "Right Up":

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)

L'evento LControl Up non viene mai attivato e questo sembra rovinare tutto.


Stavo cercando di fare qualcosa di simile e avevo lo stesso problema (il tasto di controllo si bloccava, avevo bisogno di fare clic da qualche parte sul desktop), la soluzione per me era assicurarsi che stavo usando le varianti sinistra / destra del tasto Windows e il tasto di controllo quando viene rilevato un tasto premere. Probabilmente questa non è una soluzione al problema di cui sopra, ma ho pensato di lasciare una nota qui nel caso in cui qualcun altro avesse lo stesso problema. Ecco la soluzione che ha funzionato per il mio caso, usando LWin+LCtrl+j/kper passare da un desktop all'altro: <^<#j::Send, ^#{Right}e<^<#k::Send, ^#{Left}
Jacob Stanley

Risposte:


1

A volte, quando si sta tentando di inviare tasti modificatori (win / ctrl / alt) e anche la stringa di attivazione ha tasti modificatori, è necessario attendere il rilascio dei tasti di attivazione o influiranno sulla stringa di sostituzione mentre si sta scoprendo .

Prova a utilizzare KeyWaitper ottenere questo risultato. Si noti che ora stiamo usando la sintassi dei tasti di scelta rapida e la stringa di attivazione

#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

Ai fini del cambio di desktop quanto sopra ha funzionato per me.

In altre occasioni, ci sono momenti in cui anche questo approccio non funziona e c'è un'altra possibile soluzione. Invece di attese chiave come queste ...

KeyWait LAlt
KeyWait LCtrl

... sostituisci con quello corrispondente di questi tasti per cancellare lo stato del tasto:

Send,{LAlt Down}{LAlt Up}
Send,{LCtrl Down}{LCtrl Up}

Questo funziona per me ( essendo in grado di cambiare desktop tenendo premuto il tasto Windows ), ma voglio essere in grado di cambiare il tasto di scelta rapida invece di utilizzare il lato sinistro: Win+Alt / Win+LCtrl. Preferirei usare !^+H / !^+L. Personalmente ho provato a sostituirlo da solo, ma il keywait non sembra applicarsi qui mentre devo lasciar andare tutti i modificatori e fare gli altri tasti di scelta rapida affinché funzioni ( non posso tenerlo ).
Fohrums,

Rimuovendo KeyWaitora posso usare !^+H / !^+Lmentre lo tieni ancora, grazie Kevin.
Fohrums,

0

A meno che non manchi un punto da qualche parte, Windows + ctrl+ / freccia non cambia desktop? Almeno lo fa sul mio.


2
Sì, ma quello che sto cercando di fare è aggiungere il mio modo personalizzato di cambiare desktop perché trovo in qualche modo scomodo dover usare entrambe le mani per cambiare desktop. Voglio essere in grado di utilizzare il tasto Windows + Alt sinistra / CTRL sinistra per andare avanti e indietro tra i desktop.
MattsterJames

3
@MattsterJames Probabilmente vale la pena di modificare la tua domanda per contenerla - Dubito di essere l'unica persona che la leggerà e la penserà!
Michael B,

Immagino di aver dimenticato di menzionarlo .. Grazie per averlo sottolineato! L'ho modificato.
MattsterJames il

-1

Non so se è ancora rilevante, ma 'pzone' di Reddit ha scritto uno script che utilizza una funzione con una variabile globale che ricorda il desktop su cui ti trovi, e in questo modo puoi associare un tasto di scelta rapida per alternare tra due desktop. Funzionerà solo se hai 2 desktop.

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


-1

Ad esempio, voglio impostare Pagina giù per il desktop successivo e Pagina su per il desktop precedente Dopo aver installato AutoHotkey, creo un nuovo script AutoHotKey e aggiungo ad esso questi codici e lo salvo, quindi eseguo lo script

PgDn::^#Right ;Next Desktop
return 

PgUp::^#Left ;Previous Desktop
return 

e funzionerà bene :)


1
hai letto la domanda prima di pubblicare un doppio post?
jiggunjer,

sì, ho letto in questione: o forse c'è un modo diverso di cambiare desktop senza simulare le scorciatoie predefinite di Win 10? e anche in questione: ** Questo codice funziona, ma solo se fai clic su una finestra o qualsiasi altra cosa sul desktop corrente prima di premere i tasti ** significa che il mio codice funziona senza bisogno di fare clic in nessun punto !!!!!
AliOsat Mostafavi il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.