【问题标题】:Space key to send " " (no-break space) when CapsLock state is Down, otherwise send regular space in Autohotkey空格键在 CapsLock 状态为 Down 时发送“ ”(不间断空格),否则在 Autohotkey 中发送常规空格
【发布时间】:2014-11-25 21:52:36
【问题描述】:

我正在尝试通过Space在 CapsLock 开启时发送不间断空格键,否则发送常规空格键。

我尝试了以下几种不同的变体,但没有一个完全正确。

$~Space::
    GetKeyState, state, CapsLock, T
    if state = D
        send, { } ; non-break space
    else
        send, { } ; regular space
    Return

它似乎总是发送常规空间($~,或仅发送~)或根本不发送(仅发送$),或根本不发送($~ )。

以下是我使用的 $/~ 文字的不同变体列表:

为方便起见,我假设我想使用字符 n 而不是不间断空格。

在按空格键时,除了第一行之外,保持上述代码相同:

  • $~Space::
    • 大写锁定关闭:发送<space>(好)
    • 大写锁定:发送<space>n(为什么会有额外的空间?)
  • $Space::
    • 大写锁定:不发送任何内容!
    • 大写锁定:发送n(好)
  • ~Space::
    • 大写锁定:发送<space>(好)
    • 大写锁定:发送<space>n(为什么会有额外的空间?)
  • Space::
    • 大写锁定:不发送任何内容!
    • 大写锁定:发送n(好)

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

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    如果使用来自http://ahkscript.org的ahk 1.1+

    试试这个:

    #if GetKeyState("CapsLock", "T")
    $space::send n
    return
    

    希望对你有帮助

    【讨论】:

    • 完美!旁注:需要另一个#if 来结束条件
    【解决方案2】:

    试试这个代码:


    版本 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 命令),所以请检查是否发送了正确的空格。


    建议:

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

    2. 始终将if 语句条件放在() 中。

    3. 始终在 {} 中使用 include if 语句体。

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

    【讨论】:

    • 这也发送了两个空格 (<nb-space><reg-space>),而它应该只发送 <nb-space>。您可以使用任何字符(如“n”)代替 nb-space。当大写锁定关闭时,它会发送<n><space>
    • 大写锁定检查在我的原始代码中也可以正常工作。问题是它总是要么将常规空间与 nb-space 一起发送,要么完全不发送常规空间。
    • @laggingreflex 尝试版本 2。我认为它可以满足您的需求。
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多