AutoHotKey - Windows 10에서 다음/이전 데스크톱으로 전환하는 사용자 정의 바로가기

AutoHotKey - Windows 10에서 다음/이전 데스크톱으로 전환하는 사용자 정의 바로가기

Windows 10에서 가상 데스크톱을 전환하기 위한 작은 AutoHotKey 스크립트를 작성했습니다. Windows 10의 기본 단축키(WIN + CTRL + LEFT/RIGHT)를 사용하는 대신 내 사용자 정의 키보드 단축키로 데스크톱을 전환할 수 있도록 이 코드를 작성했습니다.

암호:

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

이 코드는 작동하지만 키를 누르기 전에 현재 데스크탑의 창이나 다른 항목을 클릭하는 경우에만 작동합니다. 데스크톱을 전환하기 전에 Click 기능을 사용하여 클릭을 시뮬레이션해 보았지만(작동함) 마우스를 클릭한 좌표로 이동했는데 이는 분명히 내가 원하는 것이 아닙니다. 나는 ControlClick을 조금 사용해 보았지만 결코 작동하지 않았습니다.

그래서 내 질문은 이것입니다. 데스크탑을 전환하는 명령을 실행하기 전에 현재 데스크탑에 포커스를 설정할 수 있는 방법이 있습니까? 아니면 기본 Win 10 바로가기를 시뮬레이션하지 않고 데스크톱을 전환할 수 있는 다른 방법이 있습니까?

감사해요!


편집 1

제가 알아차린 한 가지 사실은 작업 표시줄을 클릭한 다음 LWin+ LAlt/ 를 수행하면 과 를 누른 상태에서 LCtrl번갈아 가며 원활하게 앞뒤로 전환할 수 있다는 것입니다 .LWinLAltLCtrl

작업 표시줄을 클릭한 다음 LWin+를 실행하면 LAltKeyHistory가 다음과 같이 표시됩니다.

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)

LWin하지만 +를 누르면 LAltKeyHistory는 "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)

LControl Up 이벤트는 결코 실행되지 않으며 이로 인해 모든 것이 망가지는 것 같습니다.

답변1

때때로 수정자 키(win/ctrl/alt)를 보내려고 할 때 트리거 문자열에 수정자 키도 있는 경우 트리거 키가 놓일 때까지 기다려야 합니다. 그렇지 않으면 알아낸 대체 문자열에 영향을 미칠 것입니다. .

KeyWait이 작업을 수행하려면 를 사용해 보십시오 . 우리는 이제 핫키 구문과 핫스트링을 사용하고 있습니다.

#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

데스크탑을 전환하기 위해 위의 방법이 저에게 효과적이었습니다.

어떤 경우에는 이 접근 방식조차 작동하지 않는 경우가 있으며, 또 다른 가능한 해결 방법이 있습니다. 이와 같은 키 대기 대신 ...

KeyWait LAlt
KeyWait LCtrl

...키 상태를 지우려면 다음 키 입력 중 해당하는 키로 바꾸세요.

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

답변2

어딘가에 빠진 점이 없다면 Windows + ctrl+ / 화살표가 데스크톱을 전환하지 않습니까? 적어도 내 경우에는 그렇습니다.

답변3

여전히 관련성이 있는지는 모르겠지만 Reddit의 'pzone'은 현재 어느 데스크탑에 있는지 기억하는 전역 변수가 있는 함수를 사용하는 스크립트를 작성했으며, 이렇게 하면 하나의 단축키를 바인딩하여 두 데스크탑 사이를 전환할 수 있습니다. 데스크톱이 2개 있는 경우에만 작동합니다.

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

답변4

예를 들어 다음 데스크톱에는 Page Down을, 이전 데스크톱에는 Page Up을 설정하고 싶습니다. AutoHotkey를 설치한 후 새 AutoHotKey 스크립트를 만들고 여기에 이 ​​코드를 추가하고 저장한 다음 스크립트를 실행합니다.

PgDn::^#Right ;Next Desktop
return 

PgUp::^#Left ;Previous Desktop
return 

그러면 잘 작동할 거예요 :)

관련 정보