AutoHotKey - Atalho personalizado para alternar para a área de trabalho seguinte / anterior no Windows 10

5

Escrevi um pequeno script AutoHotKey para alternar áreas de trabalho virtuais no Windows 10. Escrevi esse código para poder alternar os desktops com meu próprio atalho de teclado personalizado em vez de usar o atalho padrão do Windows 10 (WIN + CTRL + LEFT / RIGHT) .

Código:

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

Este código funciona, mas somente se você clicar em uma janela ou qualquer outra coisa na área de trabalho atual antes de pressionar as teclas. Eu tentei usar a função Click para simular um clique antes de trocar de área de trabalho (o que funcionava), mas movi o mouse para as coordenadas que eu cliquei, o que obviamente não é o que eu quero. Eu brinquei um pouco com o ControlClick, mas nunca consegui que funcionasse.

Então, minha pergunta é: existe uma maneira de definir o foco na área de trabalho atual antes de executar o comando para alternar os desktops? Ou talvez, existe uma maneira diferente de eu poder alternar os desktops sem simular os atalhos padrão do Win 10?

Obrigado!

EDIT 1

Uma coisa que eu notei é que se eu clicar na barra de tarefas, e então LWin + LAlt / LCtrl , eu posso voltar e adiante suavemente pressionando LWin e alternando entre LAlt e LCtrl .

Quando eu clico na barra de tarefas e, em seguida, faço LWin + LAlt , isso é o que KeyHistory cospe:

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)

Mas quando ACABOU de LWin + LAlt , o KeyHistory mostra que os eventos chave param após o 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)

O evento LControl Up nunca é disparado, e isso parece estragar tudo.

    
por MattsterJames 05.08.2015 / 22:09

4 respostas

1

Às vezes, quando você está tentando enviar teclas modificadoras (win / ctrl / alt) e a sequência de acionamento também possui teclas modificadoras, é necessário aguardar até que as chaves de acionamento sejam liberadas ou elas afetarão a sequência de substituição. estão descobrindo.

Tente usar KeyWait para fazer isso. Observe que agora estamos usando a sintaxe da tecla de atalho vs hotstring

#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

Para fins de troca de desktops, o acima funcionou para mim.

Em outras ocasiões, há momentos em que até essa abordagem não funciona e há outra solução possível. Em vez de esperar chaves como estas ...

KeyWait LAlt
KeyWait LCtrl

... substitua pelo correspondente desses pressionamentos de teclas para limpar o estado da chave:

Send,{LAlt Down}{LAlt Up}
Send,{LCtrl Down}{LCtrl Up}
    
por 20.07.2018 / 00:57
-1

A menos que eu esteja perdendo um ponto em algum lugar, a seta do Windows + ctrl + / não muda? Pelo menos isso acontece comigo.

    
por 05.08.2015 / 22:13
-1

Não sei se ainda é relevante, mas 'pzone' do Reddit escreveu um script que usa uma função com uma variável global que lembra qual área de trabalho você está, e assim você pode ligar uma tecla de atalho para alternar entre dois desktops . Só funcionará se você tiver 2 desktops.

switchedDesktop := false
switchDesktop() 
{
  global switchedDesktop
    if switchedDesktop
    {
        SendEvent ^#{Right}
        switchedDesktop := false
    }
    else
    {
        SendEvent ^#{Left}
        switchedDesktop := true
    }
}

link

    
por 23.10.2015 / 15:04
-1

Por exemplo, eu quero definir Page Down para a próxima área de trabalho e Page Up para a área de trabalho anterior Depois que eu instalar o AutoHotkey, eu crio um novo AutoHotKey Script e adiciono a ele os códigos e salve-os, em seguida, execute o script

PgDn::^#Right ;Next Desktop
return 

PgUp::^#Left ;Previous Desktop
return 

e funcionará bem:)

    
por 17.01.2017 / 02:35