当CapsLock为On时,我正尝试通过Space
键仅发送一个非中断空格(),另外发送常规空格键。
我尝试了以下一系列不同的变体,但它们都没有完全正常工作。
$~Space::
GetKeyState, state, CapsLock, T
if state = D
send, { } ; non-break space
else
send, { } ; regular space
Return
似乎总是发送常规空间($~
,或仅发送~
)或根本不发送(仅$
),或根本不发送(均不{ {1}}或$
)。
以下列出了我使用的~
/ $
文字的不同变体以及相应的结果:
为方便起见,我假装我想使用字符~
而不是非中断空格。
按下Space键,保持上述代码与第一行不同:
n
$~Space::
(好)<space>
(多少空间?)<space>n
$Space::
(好)n
~Space::
(好)<space>
(多少空间?)<space>n
Space::
(好)使这项工作的正确方法是什么?
答案 0 :(得分:1)
试试这个:
#if GetKeyState("CapsLock", "T")
$space::send n
return
希望有所帮助
答案 1 :(得分:0)
试试这段代码:
版本1:
$~Space::
if (GetKeyState("CapsLock", "T") = 1)
{
send, { } ; non-break space
}
else
{
send, { } ; regular space
}
return
版本2:
$~Space::
if (GetKeyState("CapsLock", "T") = 1)
{
Send, {Backspace}
send, { } ; non-break space
}
else
{
send, { } ; regular space
}
return
Capslock 状态检查在我的代码中正常工作。我不知道常规空间和非常规空间之间有什么不同(我从你的代码中加急Send
命令&#34;按原样#34;),所以请检查是否发送了正确的空间。
建议:
使用GetKeyState
内置函数代替命令。
始终将if
声明条件放入()
。
始终在if
中使用包含{}
声明正文。
始终使用来自http://ahkscript.org/的AutoHotkey及其文档(当前最新版本,新官方网站)! Autohotkey.com上的AutoHotkey及其文档已经过时,使用它们可能会遇到一些问题!