我想在autocad中打开大写时重新映射 alt + e 。
当 capslock 未启用时, alt + e 应打开菜单编辑。
我使用这样的脚本
<!e::
if(GetKeyState( "CAPSLOCK", "T" ))
{
SendInput erase{space}wp{space}
}
else
{
Send !e
}
当我打开 capslock 时,重映射键就可以了。
当我关闭 capslock 和 alt + e 时,菜单编辑打开,但立即关闭。
感谢。
答案 0 :(得分:2)
您需要在热键开头设置$
,以防止无效循环导致您的其他块中的!e
触发。您还需要在热键的末尾添加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”才能工作。我建议找到AutoCad的ahk_class,
与AHK的窗口间谍,而不是使用标题。
如果它仍然不起作用,AHK发送的速度可能比AutoCAD想要的要快 有关如何处理的信息可以在here找到。
答案 1 :(得分:1)
尝试将您的其他块更改为:
Send, {ALTDOWN}e{ALTUP}
我不依赖这些符号在AutoHotKey中发送击键。