我已经习惯了Mac笔记本电脑上的VI风格导航,每次我需要在家中切换到我的Windows机器时,我都很讨厌。在我发现“Autohotkey”之前,我感到很痛苦。它非常强大。但是,我仍然无法通过Karabiner找出OS X中的一件事。
“HJLK”导航带有“s”按钮。所以我会按住s
并按住h
按住它 - 光标向左移动,j
- 它会下降,等等。
我能用Autohotkey这样的东西吗?我知道可能使用Ctrl
或Alt
,但我希望s
按钮充当“特殊”按钮。还要记住,它必须是“导航” - 你不应该让s
去切换方向。在按住jjj
的同时按h
,然后按s
,应将光标向下移动三次,向左移动一次。
答案 0 :(得分:0)
您可以使用apersand符号组合两个键。 Documentation说:
&安培;可以在任意两个键或鼠标按钮之间使用&符号将它们组合成自定义热键。
s & h::
send {left}
return
s & j::send {down}
s & k::send {right}
s & i::send {up}
应该
如果您想切换上述热键的效果,可以使用Hotkey
命令(link)定义它们,或者更轻松地使用context-sensitive hotkeys:< / p>
^t:: ; your toggle hotkey
navigation_keys_active := ! navigation_keys_active ; toggle
return
#if navigation_keys_active
s & h::send {left}
; ... etc
#if
此外,如果您不想完全覆盖原始密钥功能,则can use the ~
tilde operator instead.
当热键触发时,其键的本机功能将不会被阻止(从系统中隐藏)。
答案 1 :(得分:0)
也许是这样的?
$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}