>>581
少なくとも私の環境ではそのコードで正常に動作します
他の常駐スクリプト(v1v2両方)があれば終了して、その記述だけのテストスクリプトを起動して正常に動作するか試してください
それで正常に動作するなら既存のスクリプトのXButton2ホットキーが干渉しています。そうでなければ他の常駐アプリが干渉している可能性が高いです

マウスの挙動としては、ドライバアプリで変な設定をしているか、チャタリングが発生している という場合でない限り、XButton2の長押しができないということはないと思いますが
確認したいのであれば、ListLines()のみのテストスクリプトを他に常駐スクリプトがない状態で実行して
View → Key history and script info を表示し、F5で更新しつつXButton2を長押しして、正常に認識されているか確認してください

既存スクリプトのタスクトレイアイコンを 右クリック → Open または ダブルクリック でも同様のログを表示でき、前述したテストスクリプトだけのチェックをすっ飛ばして
XButton2押下時の実行ログやKeyhistoryを調べることもできますが、完全にスクリプト構造を理解出来ていないのであれば、個別に順序立てて調べていく方が良いと思います

下記以外でも と言うのは、別のアルゴリズムで同様の動作をするコードという意味でしょうか? そうであるならそれを求める必要性がわかりません
別のアルゴリズムでのコーディングは可能ですが、それによって問題が解決することはないと思われますし
現在のアルゴリズムの方が洗練されていると思うので変える必要はないと思います

とりあえず、アルゴリズムに変化はないですがErrorLevelは冗長なのでクリーンアップした物を提示しておきます
XButton2:: {
if !KeyWait("XButton2", "T0.3") { ; 0.3秒対象キーが押されたかどうか
ToolTip("ここに任意のコマンド 長押し")
KeyWait("XButton2")
return
}
if !KeyWait("XButton2", "D T0.2") { ; 0.2秒対象キーが押されるのを待つ
ToolTip("ここに任意のコマンド 1度押し")
KeyWait("XButton2")
return
}
ToolTip() ; ここに任意のコマンド 2度押し
KeyWait("XButton2")
}