關於Autohotkey進階使用的幾個問題

關於Autohotkey進階使用的幾個問題

我一直在使用這個很棒的軟體已經有一段時間了,但只是為了一些基本的事情。所以我想知道以下是否可能:

  • 對不同的應用程式使用不同的快捷方式集 - 因此一個快捷方式在不同的地方執行不同的操作。

  • 為應用程式建立某種形式的模式,您可以在其中使用一些開關(vim 樣式),這將改變 Shortcat 的操作

  • 是否可以放置一些標題來指示您正在使用哪種模式 - 前一項幾乎沒有改進

我感謝大家的回答。

答案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 樣式),這將改變 Shortcat 的操作

您可以利用目前 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 以完成所有條件。

“標題”是什麼意思?您可以使用模式名稱或圖像建立一個類似工具列的小窗口,並在更改模式時或使用追蹤當前模式的計時器來刷新它。

相關內容