使用 Autohotkey 将 Ctrl 重新绑定到 Capslock 时出现问题

使用 Autohotkey 将 Ctrl 重新绑定到 Capslock 时出现问题

我正在使用 AutoHotkey 将 Ctrl 重新绑定到 Capslock,如下所示:

Capslock::Ctrl

我还绑定了主键,以便在按住 Capslock 时移动:

^h::Send {LEFT}
^j::Send {DOWN}
^k::Send {UP}
^l::Send {RIGHT}

问题是,我可以按住 Capslock 并发出移动组合键,但随后在按住 Capslock 的同时点击 h、j、k 或 l 会导致其中一个字母出现在我的编辑器中。换句话说,就好像 Capslock 被释放了一样,尽管我仍按住它。如果我按住实际的 Ctrl 键并使用移动绑定,它就可以正常工作。有人知道如何纠正这个问题吗?

答案1

解决方案由“VxE”在 AutoHotKey 论坛上发布:

Capslock::
   Gui, 93:+Owner ; prevent display of taskbar button
   Gui, 93:Show, y-99999 NA, Enable nav-hotkeys: hjkl
   Send {LCtrl Down}
   KeyWait, Capslock ; wait until the Capslock button is released
   Gui, 93:Cancel
   Send, {LCtrl Up}
Return

#IfWinExist, Enable nav-hotkeys: hjkl

   *h::Send {Blind}{LCtrl Up}{Left}{LCtrl Down}
   *j::Send {Blind}{LCtrl Up}{Down}{LCtrl Down}
   *k::Send {Blind}{LCtrl Up}{Up}{LCtrl Down}
   *l::Send {Blind}{LCtrl Up}{Right}{LCtrl Down}

#IfWinExist, ; end context-sensitive block

答案2

我认为这是因为 PC 将 Capslock 视为 TOGGLE 键。按下 Caps 键会改变状态,再次按下后状态会恢复。其他非锁定键只要按下一次就会继续发送信号。

答案3

也许你可以尝试扫描码映射方法

相关内容