Проблема с привязкой Ctrl к Capslock с помощью Autohotkey
Я использую AutoHotkey, чтобы привязать Ctrl к Capslock следующим образом:
Capslock::Ctrl
Я также связал свои домашние ключи для движения, пока удерживается Capslock:
^h::Send {LEFT}
^j::Send {DOWN}
^k::Send {UP}
^l::Send {RIGHT}
Проблема в том, что я могу удерживать Capslock и выдавать одно комбо движения, но последующие нажатия h,j,k или l, все еще удерживая Capslock, приводят к тому, что одна из этих букв появляется в моем редакторе. Другими словами, это как будто Capslock выпущен, хотя я все еще удерживаю его. Если я удерживаю фактическую клавишу Ctrl и использую привязки движения, она работает нормально. Кто-нибудь знает, как это исправить?
3 ответа
Решение было любезно размещено на форуме AutoHotKey компанией VxE:
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
Я думаю, это потому, что ПК читает колпачок как клавишу TOGGLE. Заглавные буквы нажимаются, и они изменяют состояние, затем снова нажимаются, и состояние возвращается назад. Другие неблокирующие клавиши продолжают посылать свой сигнал до тех пор, пока они нажаты.
Может быть, вы можете попробовать метод отображения сканкода, как это.