AutoHotKey - 키를 누르고 있습니다.

AutoHotKey - 키를 누르고 있습니다.

F3를 누르고 있을 때 히트 Ctrl하고 를 F2놓을 때 히트 해야 하는 AutoHotKey 스크립트가 있습니다 Ctrl.

현재 내 스크립트는 다음과 같습니다.

$ctrl::
Suspend, On
Send, {F3}
While (GetKeyState("Ctrl",P))
{
}
Send, {F2}
Suspend, Off
Return

하지만 누르고 있으면 Ctrl아무 일도 일어나지 않습니다. Ctrl를 놓으면 F3F2. 누군가 이 문제를 해결하는 방법을 말해 줄 수 있나요?

답변1

이 코드는 원하는 기능을 제공합니다.

$~ctrl::
    send {f3}
    keyWait, ctrl
    send {f2}
return

답변2

그만큼키업단축키 옵션이 필요한 것 같습니다.

테스트된 작업 코드는 다음과 같습니다.

Ctrl::
Send {F3}
keywait, Ctrl, L ; prevent F3 from firing while Ctrl is being held down.
return

Ctrl Up::Send {F2}

답변3

을 통해:http://www.autohotkey.com/docs/commands/Send.htm

키를 누르거나 떼려면 키 이름을 중괄호로 묶고 그 뒤에 Down 또는 Up이라는 단어를 입력합니다. 예:

{b 아래로 보내기}{b 위로}
보내기 {TAB 아래로}{TAB 위로}
보내기 {위로 아래로} ; 위쪽 화살표 키를 누릅니다.
수면 1000 ; 1초 동안 그대로 유지하세요.
보내기> {위로} ; 위쪽 화살표 키를 놓습니다.

위의 방법으로 키를 누르고 있으면 물리적으로 누르고 있는 것처럼 자동 반복이 시작되지 않습니다(자동 반복은 드라이버/하드웨어 기능이기 때문입니다). 그러나 루프를 사용하여 자동 반복을 시뮬레이션할 수 있습니다. 다음 예에서는 20개의 탭 키 입력을 보냅니다.

Loop 20 {
Send {Tab down} ; 자동 반복은 연속적인 다운 이벤트(업 이벤트 없음)로 구성됩니다.
수면 30 ; 키 입력 사이의 밀리초 수입니다(또는 SetKeyDelay 사용).
}
{Tab up} 보내기 ; 키를 놓습니다.

DownTemp라는 단어를 사용할 수도 있습니다. 수정자 키(Ctrl/Shift/Alt/Win)를 제외하면 해당 효과는 Down과 동일합니다. 이러한 경우 DownTemp는 키가 영구적으로 다운되지 않았으며 키 입력이 필요할 때마다 해제될 수 있음을 후속 전송에 알립니다. 예를 들어 {Control DownTemp}를 보내고 나중에 Send a를 사용하면 컨트롤-A 키 입력이 아닌 일반 "a" 키 입력이 생성됩니다.

관련 정보