autohotkey大写锁定到ctrl不释放

时间:2015-04-17 06:40:17

标签: autohotkey remap ctrl capslock

我使用AutoHotkey将Caps Lock映射到Ctrl,并尝试在总指挥官中使用Ctrl + K作为Tab

SetCapsLockState AlwaysOff
Capslock::Ctrl

#ifWinActive ahk_class TTOTAL_CMD
  ^k::Send, {Tab}
#ifWinActive

当我使用Ctrl + K重映射与普通Ctrl时,它可以正常工作。但是当我尝试将其与Caps Lock + K一起使用时,它第一次有效,但是虽然我没有发布Caps Lock,但它会发送k而不是{{} 1}}。日志说:

Tab

这是日志,当我按下008: SetCapslockState,AlwaysOff 009: Return (3.49) ; Hiting Ctrl + K twice. 081: Send,{Tab} (0.02) 081: Return (0.30) 081: Send,{Tab} (0.02) 081: Return (1.59) ; Hiting Caps Lock + K twice. 009: SetKeyDelay,-1 009: Send,{Blind}{Ctrl DownTemp} 009: Return (0.47) 081: Send,{Tab} (0.01) 081: Return (0.73) ; The second Tab is missing, a simple K sent. 009: SetKeyDelay,-1 009: Send,{Blind}{Ctrl Up} 009: Return (3.06) ,释放它,然后按下againg:

Caps Lock + K

我认为问题的根源可能在009: SetKeyDelay,-1 009: Send,{Blind}{Ctrl DownTemp} 009: Return (0.34) 081: Send,{Tab} (0.01) 081: Return (0.08) 009: SetKeyDelay,-1 009: Send,{Blind}{Ctrl Up} 009: Return (0.34) 009: SetKeyDelay,-1 009: Send,{Blind}{Ctrl DownTemp} 009: Return (0.19) 081: Send,{Tab} (0.01) 081: Return (0.06) 009: SetKeyDelay,-1 009: Send,{Blind}{Ctrl Up} 009: Return (3.00) ,但我没有找到任何解决方案。有人遇到这个问题吗?

修改

另一个有趣的事情是,当我发送代码而不是简单的密钥时,它可以在不释放大写锁定的情况下工作:

CapsLock::Ctrl

日志说:

^e::PostMessage, 1075, 3005, , , ahk_class TTOTAL_CMD ; cm_SwitchToNextTab=3005;Switch to next Tab (as Ctrl+Tab) (see TOTALCMD.INC file)

2 个答案:

答案 0 :(得分:1)

我记得当我正在进行CapsLock重映射时遇到类似这样的奇怪问题。您可以将CapsLock设置为不执行任何操作,而是检查#If指令中的密钥状态,而不是将CapsLock映射到控制然后在热键中使用该组合。我认为这将解决大部分奇怪的问题。

SetCapsLockState, AlwaysOff
CapsLock::Return

#If WinActive("ahk_class TTOTAL_CMD") and GetKeyState("CapsLock", "P")
    k::Send, {Tab}

答案 1 :(得分:0)

我个人只是检查你的窗口是否在^ k按键上有效并从那里开始。我使用了Untitled - Notepad,所以我可以测试一下。

CapsLock::Ctrl
^k::
{
    IfWinActive, Untitled - Notepad
        SendInput, {tab}
    else
        Msgbox
    return
}