これが右クリックドラッグをサポートするものです!
Hotkey, LButton, off
#IfWinActive ahk_class MozillaWindowClass
RButton & LButton::
Send X
Return
RButton::return
#IfWinNotActive ahk_class MozillaWindowClass
~$RButton::
Hotkey, LButton, on
while GetKeyState("RButton", "P") {
continue
}
Hotkey, LButton, off
Return
LButton::Send Y
Return
手動で処理しRButton
ます。をRButton
押すと、ホットキーが有効になり、解放されるLButton
のを待ってから非アクティブになります。ホットキーは、を使用します。RButton
これは通常、クリックスルーを通過させます。RButton
~
LButton
一番上の行で最初は無効になっています。
{RButton Down}
別の方法は、ホットキーの開始時と終了時に送信することでした{RButton Up}
。
編集に応じて、Autohotkeyの送信されたイベントを拒否するプログラムは、低レベルのフックに依存するプログラムのみである必要があります...下部にあるメソッドの本当の問題は、ボタンを押したまま処理するのではなく、シングルクリックのみを送信することです。この方法と、ダウンとアップを別々に送信することは、両方とも適切に行う必要があります。
この回答の下部に記載されているアクティブウィンドウのバグはまだ存在しますが、それはの問題#IfWin[Not]Active
です。
古いもの
アンパサンド(強調鉱山)に関するドキュメントを参照してください。
2つのキー(ジョイスティックボタンを除く)の間に「&」を使用して、それらのカスタムの組み合わせを定義できます。次の例では、Numpad0を押したまま、2番目のキーを押してホットキーをトリガーします。
Numpad0 & Numpad1::MsgBox You pressed Numpad1 while holding down Numpad0.
Numpad0 & Numpad2::Run Notepad
上記の例では、Numpad0がプレフィックスキーになります。ただし、これにより、Numpad0がそれ自体で押されたときに、元の/ネイティブの機能が失われます。これを回避するために、スクリプトは、次のいずれかのような新しいアクションを実行するようにNumpad0を構成する場合があります。
Numpad0::WinMaximize A ; Maximize the active/foreground window.
Numpad0::Send {Numpad0} ; Make the release of Numpad0 produce a Numpad0 keystroke. See comment below.
上記のホットキーのいずれかが存在すると、Numpad0が解放されて指示されたアクションが実行されますが、Numpad0が押されている間に他のキーを押さなかった場合に限ります。
したがって、その例に従ってください。
#If WinActive("ahk_class MozillaWindowClass")
RButton & LButton::
Send X
Return
RButton::return
#If !WinActive("ahk_class MozillaWindowClass")
RButton & LButton::
Send Y
Return
RButton::Send {RButton}
注には、少なくとも私のテストでRButton
は何もしないバリアントが必要です(以下を参照)。WinActive
RButton::return
Autohotkey_LではなくAutohotkey標準を使用しているので、持っていません#If
。上記はテストされていません。次のテストを行いましたが、動作します。
#IfWinActive ahk_class MozillaWindowClass
RButton & LButton::
Send X
Return
RButton::return
#IfWinNotActive ahk_class MozillaWindowClass
RButton & LButton::
Send Y
Return
RButton::Send {RButton}
私が気付いた興味深いバグは、2番目の(NotActive)バリアントがFirefoxに時々適用されることです。
- 別のウィンドウがアクティブです
RButton
ダウンが送信されます
- Firefoxはアクティブではないため、2番目のバリアントが処理されます
- <delay>(
RButton
ミリ秒のオーダーで、無限に遅延が認識できない場合もありますが、押し続けられます)
- Firefoxがアクティブになります
- <遅延>(まだ押し続けている)
RButton
upが送信RButton
され、ドキュメントに従って送信されます。RButton
Firefoxは、アクティブなウィンドウチェックから送信されるまでの遅延でアクティブになったため、FirefoxにRButton
送信されます。
これは、Firefoxと別のウィンドウの両方が表示されていて、クリック時にもう一方のウィンドウがアクティブな場合に発生します。
IfWinNotActive
ホットキー内にチェックを追加してこのバグを修正しようとしましたRButton
が、機能していないようです。