我使用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)
答案 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
}