ホットキーの先頭にが必要で、else ブロックでトリガーされる$
無限ループを防ぎます。また、ホットキーの下にスクリプトが続くのを防ぐために、ホットキーの最後に!e
を追加することもできます。Return
$!e::
if GetKeyState( "CapsLock", "T" )
Sendinput, erase{space}wp{space}
else
Sendinput, !e
Return
(かっこは、if/else ブロックが複数の行にある場合にのみ必要です。)
それを超えて、可能性のある問題は、alt を送信するようにも設定されている alt ホットキーであるということです。
これは問題だと言います。alt を押したままにすると、メニューがアクティブに
なり、スクリプトが alt を送信し、それと競合するためです。
Ricardo が言ったように、これをスクリプト化する理想的な方法は、#IF
コマンドを使用することです (AHK_L にのみ含まれています)。
#If GetKeyState("CapsLock", "T") and WinActive("AutoCAD")
!e:: SendInput, erase{space}wp{space}
#If
コマンドの式にWinActive()関数を追加できることに注意してください。#If
最初はそれなしで試してみてください。また、それが機能するには、アプリケーションのタイトルが常に正確に「AutoCAD」である必要があることも理解してください。タイトルを使用する代わりに、AHK のウィンドウ スパイを使用して、AutoCad の ahk_class を検索することをお勧めします。
それでもうまくいかない場合は、AutoCAD が受信したい速度よりも AHK の送信の方が速い可能性があります。
対処方法については、こちらをご覧ください。