我有一些通过AutoHotkey使用的键映射和宏。 我已经重新控制了封锁,我制作了一个宏,让我按^,为家和^。为了结束。如果我按下大写字母和','或','这样就可以了。一旦。但如果我继续按住大写字母然后按“,”或“。”再次它只是插入角色。当我按住实际大写锁定键时,我得到预期的行为。
我在这个问题中尝试了答案中的建议:Autohotkey, issue after mapping capslock::ctrl 这是有效的 - 除了它改变从行的开始/结束到文件的开始/结束的行为。
这是我的代码:
^,::Send, {Home}
^.::Send, {End}
Capslock::Ctrl
答案 0 :(得分:1)
将 CapsLock 直接映射到键时,有许多可能的复杂情况。我建议你按住 CapsLock 时设置变量的路线。以下是我建议你为AutoHotkey_L做的事情。
global capDown = 0
CapsLock::
capDown = 1
return
CapsLock up::
capDown = 0
return
#If capDown
*h::CapsNav("Left")
*j::CapsNav("Down")
*k::CapsNav("Up")
*l::CapsNav("Right")
*,::CapsNav("Home")
*.::CapsNav("End")
*n::CapsNav("Home", "^")
*p::CapsNav("End", "^")
*a::Send ^a ; add as needed
CapsNav(action, initmod = "", mod = "+")
{
If ! GetKeyState("alt")
Send % initmod "{" action "}"
Else
Send % mod . initmod "{" action "}"
SetCapsLockState, AlwaysOff
}
对于最新版本的AutoHotkey,请移除global
并将#If capDown
更改为if (capDown)
包含的功能还允许按住 Alt 以在移动时选择文本。它还允许使用诸如 Ctrl 之类的修饰符。
如果您将 CapsLock 用于其他组合键,您还需要添加所有这些组合。希望这会有所帮助。
答案 1 :(得分:0)
不确定为什么会出现这种情况。
我试过这个测试,并且在Ctrl或CapsLock一直按下的情况下它可以正常工作多次。
Capslock::Ctrl
^,::SoundBeep, 300, 500
^.::SoundBeep, 1000, 500