고급 Autohotkey 사용에 관한 몇 가지 질문

고급 Autohotkey 사용에 관한 몇 가지 질문

나는 사용해 왔다이 멋진 소프트웨어지금은 한동안이지만 몇 가지 기본적인 사항에 대해서만 설명합니다. 그래서 다음과 같은 일이 가능한지 궁금합니다.

  • 다양한 응용 프로그램에 대해 다양한 단축키 세트를 사용하려면 하나의 단축키가 서로 다른 위치에서 다양한 작업을 수행합니다.

  • 일부 스위치(vim 스타일)를 사용할 수 있는 응용 프로그램 모드를 만들면 단축 고양이가 수행하는 작업이 변경됩니다.

  • 사용 중인 모드를 나타내는 캡션을 배치할 수 있다면 이전 항목에 비해 거의 개선되지 않습니다.

답변해 주신 모든 분들께 감사드립니다.

답변1

포인트 1은 해결된 것 같습니다. 포인트 2와 3에 관해서는 다음과 같이 할 수 있습니다. 내 코드는 그다지 효율적이지는 않지만 작동합니다.

#Persistent                   ;--This needs to come before any
SetTimer, IsActiveTimer, 20   ;--return in the script.

IsActiveTimer:  ;--Below comes what the timer does
if StateIsActive = 1
{
  MouseGetPos, Px, Py   ;--The below creates tooltip when active
  ToolTip, "State is: Active", Px+40, Py+50, 5
}
else
{
ToolTip,,,, 5  ;--Removes tooltip when not active
   }
return

!^#z::   ;--This is the hotkey that toggles the state
         ;--between active and not active.
If StateIsActive = 1
{
StateIsActive := 0
}
else
{
StateIsActive := 1
}
return

!^#a::  ;--Hotkey that types either Zerg or Borg
        ;--depending on active/not active, so that you
        ;--may automatically choose the right party in
        ;--your documents in any potential war
If StateIsActive = 1
{
Sendinput, Zerg
}
Else
{
Sendinput, Borg
}
return

답변2

예.

다양한 애플리케이션에 대한 다양한 규칙을 보려면 다음을 살펴보세요.#ifWinActive.

예를 들어:

; Make Ctrl+PageUp and Ctrl+PageDown work in Safari
#ifWinActive ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
^PgUp::Send ^+[
#ifWinActive ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
^PgDn::Send ^+]

#ifWinNotActive ahk_class PuTTY
+Ins::Send ^v
#ifWinNotActive ahk_class PuTTY
+Del::Send ^x
#ifWinNotActive ahk_class PuTTY
^Ins::Send ^c

AutoHotkey 아이콘을 마우스 오른쪽 버튼으로 클릭하고 Window Spy를 마우스 오른쪽 버튼으로 클릭하여 ahk_class의 값을 알아냅니다.

Vi와 같은 모드도 가능할 것 같습니다. 보세요코만드예를 들어.

답변3

일부 스위치(vim 스타일)를 사용할 수 있는 응용 프로그램 모드를 만들면 단축 고양이가 수행하는 작업이 변경됩니다.

AutoHotkey_L의 현재 배포판(사이트에서 다운로드할 것으로 예상되는 것)에서 사용 가능한 #If 문을 사용할 수 있습니다. 다음과 같이 작성할 수 있습니다.

#If Winactive("window_name") and (Mode = Mode1)

F1::MsgBox, Mode1
::mode::Mode1

#If Winactive("window_name") and (Mode = Mode2)

F1::MsgBox, Mode2
::mode::Mode2

모든 조건문을 완료하기 위해 맨 끝에 #If를 넣을 수 있습니다.

'캡션'이란 무엇을 의미하나요? 모드 이름이나 이미지로 작은 도구 모음 같은 창을 만들고 모드를 변경할 때마다 새로 고치거나 현재 모드를 추적하는 타이머를 사용하여 새로 고칠 수 있습니다.

관련 정보