键盘重复操作时 Caplock 重新映射到修饰键失败

键盘重复操作时 Caplock 重新映射到修饰键失败

我已将我的Caps lock键重新映射到Ctrl+ Alt+Shift基于这个超级用户的回答

; Caps lock becomes ctrl+alt+shift
*CapsLock::
  SetKeyDelay -1
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

*CapsLock up::
  SetKeyDelay -1
  Send {Blind}{Ctrl Up}{Alt Up}{Shift Up}
return

然后,为了获得 Vim 风格的导航,我尝试重新映射hjkl到箭头键。我尝试了几种方法,但都不起作用。我选择了以下方法,因为它适用于单键按下。但是当我按住时,例如Caps lockJ在 Eclipse 中,CtrlAltJ键盘快捷键会触发,而不是简单地向下一行。它只会在自动键盘重复时触发,而不会在原始按键时触发。

^!+h::
  Send {Left}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

^!+j::
  Send {Down}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

^!+k::
  Send {Up}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

^!+l::
  Send {Right}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

通过点击 20 次来向下滚动 20 行J太乏味了。有人有解决方案吗,还是我使用不当?我有一些其他命令映射到Caps lockCapslockWin(技术上映射到 ^!+ 和 ^!+#),因此修复最好不要破坏它们。例如:

; Caps lock + i becomes escape
^!+i::
  Send {Escape}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

现在这个功能很好用,因为我不需要按住按键Esc。谢谢!

答案1

这是您当前所做操作的一种替代方法。我已将其设置为CapsLock只需切换变量cmd即可。根据此变量,您的移动键将启用。可以按住这些键中的任何一个以重复多次。

我还提供了一些方法,这些方法现在可能有些过度,但以后可能会对你有用。

*CapsLock::    cmd := 1
*CapsLock up:: cmd := 0

#if cmd
    h::Key("left")
    j::Key("down")  
    k::Key("up")    
    l::Key("right")
    n::Key_repeat("^", "left")
    p::Key_repeat("^", "right")
#if

Key(key)
{
   SendInput {blind}{%key%}
}

Key_repeat(pfx, key)
{
    SendInput {blind}%pfx%{%key%}
}

相关内容