首页 > 解决方案 > 如何在自动热键中按 Ctrl + CapsLock = CtrlLock

问题描述

我想按Ctrl + Capslock哪个会切换锁定Ctrl状态。

例如,

如果我按Ctrl + Capslock,那么如果我继续点击 chrome 上的谷歌搜索结果,每个结果都会在新的背景选项卡中打开,或者如果我想保存一个 pdf 文件,我只需按s而不是Ctrl + s

如果我希望禁用此行为,或者换句话说,解锁Ctrl键,我可以Ctrl + Capslock再次按下。

换句话说,

Ctrl+Capslock组合将使Ctrl键始终被按下,而我没有实际按下它。重做组合Ctrl再次取消按下。

我在这里看到了这一点,但使用了Ctrl密钥本身。

我试过修改那个版本,但它不起作用

Hotkey, ^CapsLock, Lock
return

Lock:
GetKeyState, state, Control, T
if state = D
Send {Control Down}
else
Send {Control Up}

标签: autohotkey

解决方案


问题是控制切换功能在用户仍保持控制时运行,因此该功能将始终将控制视为处于关闭状态。为了解决这个问题,我建议将“控制锁定”切换状态存储在一个变量中,并在执行该功能之前等待控制被物理释放。放在一起看起来是这样的。

#SingleInstance, force
crlock = false

^CapsLock::
    KeyWait, control, u
    IfEqual, crlock, false
    {
        Send, {Control Down}
        crlock = true
    }
     else
    {
        Send, {Control Up}
        crlock = false
    }
Return

推荐阅读