我想alt+e在 AutoCAD 中打开 caps 时重新映射。
而当capslock未开启时,alt+e应打开菜单编辑。
我使用这样的脚本
<!e::
if(GetKeyState( "CAPSLOCK", "T" ))
{
SendInput erase{space}wp{space}
}
else
{
Send !e
}
当我打开时capslock,重新映射键就可以了。
当我关闭capslock和alt+e时,菜单编辑打开,但立即关闭。
谢谢。
我想alt+e在 AutoCAD 中打开 caps 时重新映射。
而当capslock未开启时,alt+e应打开菜单编辑。
我使用这样的脚本
<!e::
if(GetKeyState( "CAPSLOCK", "T" ))
{
SendInput erase{space}wp{space}
}
else
{
Send !e
}
当我打开时capslock,重新映射键就可以了。
当我关闭capslock和alt+e时,菜单编辑打开,但立即关闭。
谢谢。
您需要$
在热键的开头使用 a 来防止!e
else 块中的 the 触发的无限循环。您还需要Return
在热键末尾添加一个以防止脚本继续进入此热键下方的内容。
$!e::
if GetKeyState( "CapsLock", "T" )
Sendinput, erase{space}wp{space}
else
Sendinput, !e
Return
(仅当 if/else 块超过一行时才需要括号。)
除此之外,可能的问题是它是一个也设置为发送 alt 的 alt 热键。
我说这是一个问题,因为如果您按住 alt,它会激活菜单,
然后脚本会发送 alt,这将与此冲突。
正如里卡多所说,编写脚本的理想方法是使用#IF
命令(仅包含在 AHK_L 中)。
#If GetKeyState("CapsLock", "T") and WinActive("AutoCAD")
!e:: SendInput, erase{space}wp{space}
#If
请注意,您可以将WinActive()函数添加到#If
命令的表达式中。首先尝试不使用它,并且还要意识到应用程序的标题必须始终完全是“AutoCAD”才能正常工作。我建议使用 AHK 的窗口间谍找到 AutoCad 的 ahk_class,而不是使用标题。
如果仍然无法正常工作,则 AHK 的发送速度可能比 AutoCAD 想要接收的速度快。
可以在此处找到有关如何处理的信息。
尝试将您的 else 块更改为:
Send, {ALTDOWN}e{ALTUP}
我不依赖这些符号在 AutoHotKey 中发送击键。