当CapsLock状态为Down时,发送“”(无中断空间)的空格键,否则在Autohotkey中发送常规空间

时间:2014-11-25 05:43:27

标签: autohotkey

当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::(好)

使这项工作的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

如果使用http://ahkscript.org

中的ahk 1.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;),所以请检查是否发送了正确的空间。


建议:

  1. 使用GetKeyState内置函数代替命令。

  2. 始终将if声明条件放入()

  3. 始终在if中使用包含{}声明正文。

  4. 始终使用来自http://ahkscript.org/的AutoHotkey及其文档(当前最新版本,新官方网站)! Autohotkey.com上的AutoHotkey及其文档已经过时,使用它们可能会遇到一些问题!