Autohotkey 按住一个按钮+按另一个宏
我太习惯在我的Mac笔记本电脑上使用VI风格的导航,以至于每当我需要在家里切换到我的Windows电脑时,我都很讨厌。在我发现自动热键之前,我感到很痛苦。它相当强大。然而,我仍然不知道我在OSX中有什么东西可以使用 带s按钮的HJLK导航。所以我会按住s,同时按住h——光标向左移动,对于j——它向下移动,等等Autohotkey 按住一个按钮+按另一个宏,autohotkey,Autohotkey,我太习惯在我的Mac笔记本电脑上使用VI风格的导航,以至于每当我需要在家里切换到我的Windows电脑时,我都很讨厌。在我发现自动热键之前,我感到很痛苦。它相当强大。然而,我仍然不知道我在OSX中有什么东西可以使用 带s按钮的HJLK导航。所以我会按住s,同时按住h——光标向左移动,对于j——它向下移动,等等 我可以用自动热键来做这样的吗?我知道使用Ctrl或Alt可能是可行的,但我希望s按钮的行为像一个特殊的按钮。还请记住,它必须是导航-你不应该让我们去切换方向。在按住s的同时,先按jjj,然
我可以用自动热键来做这样的吗?我知道使用Ctrl或Alt可能是可行的,但我希望s按钮的行为像一个特殊的按钮。还请记住,它必须是导航-你不应该让我们去切换方向。在按住s的同时,先按jjj,然后按h,应将光标向下移动三次,然后向左移动一次 您可以使用光圈和符号组合两个关键点。说: &可以在任意两个键或鼠标按钮之间使用符号AND将它们组合成自定义热键 应该做 如果要切换上述热键的效果,可以改为使用热键命令定义热键,或者更简单地使用: 另外,如果您根本不希望覆盖原始的key函数,那么 当热键触发时,其键的本机功能将不会被阻止,并且不会被系统隐藏 也许是这样
$i::HkHelperFunc("s", "{Up}", "i")
$h::HkHelperFunc("s", "{Left}", "h")
$j::HkHelperFunc("s", "{Down}", "j")
$k::HkHelperFunc("s", "{Right}", "k")
HkHelperFunc(key, keyIfKeyDown, keyIfKeyUp) {
If GetKeyState(key)
SendInput, {BS}%keyIfKeyDown%
Else
SendInput, %keyIfKeyUp%
}
或者,由于无需删除任何字符,因此可能会更干净一些:
$s::
sDown := True
Input, L, L1 T0.3
If (sDown && (L = "I" || L = "H" || L = "J" || L = "L"))
traytip ;do nothing
Else If (ErrorLevel != "Timeout")
SendInput, s%L%
Return
$s UP::
sDown := False
Return
#If sDown
i::SendInput, {Up}
h::SendInput, {Left}
j::SendInput, {Down}
k::SendInput, {Right}
这将阻止单个s键,因此您将无法键入它。起初它似乎可以工作,但有时它无法识别s键被自己按下。
$i::HkHelperFunc("s", "{Up}", "i")
$h::HkHelperFunc("s", "{Left}", "h")
$j::HkHelperFunc("s", "{Down}", "j")
$k::HkHelperFunc("s", "{Right}", "k")
HkHelperFunc(key, keyIfKeyDown, keyIfKeyUp) {
If GetKeyState(key)
SendInput, {BS}%keyIfKeyDown%
Else
SendInput, %keyIfKeyUp%
}
$s::
sDown := True
Input, L, L1 T0.3
If (sDown && (L = "I" || L = "H" || L = "J" || L = "L"))
traytip ;do nothing
Else If (ErrorLevel != "Timeout")
SendInput, s%L%
Return
$s UP::
sDown := False
Return
#If sDown
i::SendInput, {Up}
h::SendInput, {Left}
j::SendInput, {Down}
k::SendInput, {Right}