Autohotkeyの高度な使い方に関するいくつかの質問

Autohotkeyの高度な使い方に関するいくつかの質問

私は使用していますこの素晴らしいソフトウェアしばらく前から、基本的なことだけを考えています。そこで、次のことが可能かどうか考えています。

  • 異なるアプリケーションに異なるショートカット セットを使用するため、1 つのショートカットで場所によって異なるアクションを実行できます。

  • アプリケーション用のモードを作成し、スイッチ(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

はい。

異なるアプリケーションごとの異なるルールについては、以下を参照してください。#ifWinアクティブ

例えば:

; 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 だけを置くことができます。

「キャプション」とはどういう意味ですか? モードの名前または画像を含む小さなツールバーのようなウィンドウを作成し、モードを変更するたびに、または現在のモードを追跡するタイマーを使用してウィンドウを更新することができます。

関連情報