3

Я использую 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 ответа3

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
0

Я думаю, это потому, что ПК читает колпачок как клавишу TOGGLE. Заглавные буквы нажимаются, и они изменяют состояние, затем снова нажимаются, и состояние возвращается. Другие неблокирующие клавиши продолжают посылать свой сигнал до тех пор, пока они нажаты.

0

Может быть, вы можете попробовать метод сопоставления сканкодов, как это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .