按下大写锁定键时,空格键返回下划线

按下大写锁定键时,空格键返回下划线

基本上,我正在寻找的是:CapsLock开启 时我想Space返回_并且 我想Shift+Space返回

细节:这是这个问题我询问了将Shift+Space键重新映射为下划线 ( _) 的问题。我得到了一个很好的答案,但我发现这有点复杂,尤其是当我的小指很懒的时候,它不喜欢Shift在我按下按键时及时将自己从Space按键上拿开。所以现在我想知道是否有人知道一种解决方案,可以在打开Space时将按键重新映射为下划线。而且,更好的是,如果打开并且我按下+组合键,它将强制输入空格字符。这有意义吗?继续询问以寻求澄清。CapsLockCapsLockShiftSpace

哦,顺便说一下,我之前问的问题的解决方案可能具有这种能力。它叫做自动热键。如果这样就好了,那我就非常满意了!谢谢!

答案1

AutoHotkey 脚本:

+Space::
state := GetKeyState("CapsLock", "T")
if state
    SendPlay {Space}
else
    SendPlay _
return

Space::
state := GetKeyState("CapsLock", "T")
if state
    SendPlay _
else
    SendPlay {Space}
return

它能做什么:

  • 如果CapsLock不是积极的:

    • Space插入空格。

    • Shift+Space插入下划线。

  • 如果CapsLock处于活动状态:

    • Space插入下划线。

    • Shift+Space插入空格。

如果你想SpaceCapsLock不是活跃,只需消除第一个块。

如何使用:

  1. 下载并安装最新版本。

  2. underscore.ahk使用您最喜欢的文本编辑器将上述脚本保存为。

  3. 双击该文件即可运行脚本。

  4. 如果您愿意,请复制文件夹中的脚本(或其链接)Startup

怎么运行的:

  • +Space:: ... return...当按下Shift+时执行。Space

    +Space:: ... return按下...时执行(不带修饰符)。Space

  • state := GetKeyState("CapsLock", "T")检查是否CapsLock处于活动状态。

    • 如果是,state则执行true其后的块。if state

    • 如果不是,state则是,并且执行false其后的块。else

  • SendPlay X插入字符(序列)X

    您不能Send在这里使用,因为它会递归触发脚本,导致无限循环。

  • return在当前点终止脚本。

    第二个return是可选的,第一个不是。如果没有后者,Shift+Space会导致两个都要执行的块。

答案2

$Space::
state := GetKeyState("CapsLock", "T")
if state
    Send _
else
    Send {Space}
return        

上面的答案对我来说也不起作用。但是这个有效。

相关内容