1

alt+eAutoCADでキャップがオンになっているときに再マップしたい。

capslockオンになっていないときは、alt+eメニュー編集を開く必要があります。

私はこのようなスクリプトを使用します

<!e::
if(GetKeyState( "CAPSLOCK", "T" ))
{
    SendInput erase{space}wp{space}
}
else
{
    Send !e
}

オンにするとcapslock、リマッ​​プキーはOKです。

をオフにしcapslockalt+e、メニュー編集を開くと、すぐに閉じました。

ありがとう。

4

2 に答える 2

2

ホットキーの先頭にが必要で、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 の送信の方が速い可能性があります。
対処方法については、こちらをご覧ください

于 2012-07-06T02:50:56.050 に答える
1

else ブロックを次のように変更してみてください。

Send, {ALTDOWN}e{ALTUP}

AutoHotKey でキーストロークを送信するためにこれらのシンボルに依存していません。

于 2012-07-02T07:56:35.213 に答える