AutoHotKey-키를 누르고 있습니다


1

나는 명중한다 AutoHotkey에 스크립트가 F3나는 누르고 있으면 Ctrl, 그리고 히트 F2내가 놓을 때를 Ctrl.

내 스크립트는 현재 :

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

그러나 내가 누르고 Ctrl있으면 아무것도하지 않습니다. 내가 놓으면 Ctrl, 그것은 모두 명중 F3하고 F2. 누군가이 문제를 해결하는 방법을 말해 줄 수 있습니까?

답변:


1

경유 : http://www.autohotkey.com/docs/commands/Send.htm

키를 누르거나 놓으려면 다음과 같이하십시오. 키 이름 뒤에는 아래 또는 위 단어가 있습니다. 예 :

Send {b down} {b up}
Send {TAB down} {TAB up}
Send {Up down}; 위쪽 화살표 키를 누르십시오.
수면 1000; 1 초 동안 유지하십시오.
보내기> {Up up}; 위쪽 화살표 키를 놓습니다.

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

Loop 20 {
Send {Tab down}; 자동 반복은 연속적인 다운 이벤트 (업 이벤트가없는)로 구성됩니다.
수면 30; 키 입력 사이의 밀리 초 수입니다 (또는 SetKeyDelay 사용).
}
{Tab up } 보내기; 키에서 손을 떼십시오.

DownTemp라는 단어가 사용될 수도 있습니다. 그 효과는 수정 키 (Control / Shift / Alt / Win)를 제외하고 Down과 같습니다. 이러한 경우 DownTemp는 후속 전송에 키가 영구적으로 다운되지 않았 음을 알리고 키 입력이 필요할 때마다 해제 될 수 있습니다. 예를 들어, Send {Control DownTemp} 다음에 Send a를 보내면 control-A 키 입력이 아닌 정상적인 "a"키 입력이 발생합니다.


문제는 키를 보내는 것이 아니라 핫키가 트리거되는 것입니다.
Nelson

1

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

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

~ 수정자는 핫키가 핫키를 차단하지 않도록하므로 효과적으로 Ctrl + F3 및 Ctrl + F2를 보냅니다.
Nelson

아니요. F3 만 보내는 중입니다. 내 코드를 사용해보십시오. F 키 중 하나를 S로 변경하고 Word 문서에서 관리하십시오. Ctrl-S가 아닌 S 만 저장합니다. KB 후크가 입력을 기다리는 것을 막기 위해 물결표가 필요합니다. 그렇지 않으면 작동하지 않습니다. (이것이 생략 된 물결표를 가진 새로운 답이 이것과 정확히 같은 이유이지만, 두 배의 선이 필요했습니다.)
adaaaam

0

의 keyup의 단축키에 대한 옵션은 필요한 것 같다.

다음은 테스트 작업 코드입니다.

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

Ctrl Up::Send {F2}

이 스크립트를 실행하고 CTRL + C와 같은 CTRL 기반 바로 가기 키를 사용하려고하면 어떻게되는지 모르겠습니다. 나는이 스크립트가 그것을 막을 것이라고 생각한다.
넬슨

질문은 이미 작업 스크립트로 답변되었습니다 : superuser.com/a/815704/239384
adaaaam

또한 KeyUp은 불필요합니다. 복잡성을 더하는 여러 핫키를 생성하고 있습니다
adaaaam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.