У меня нет больших пальцев, и я не могу нажать клавишу Ctrl ладонью. Так как я использую Ctrl для очень многих горячих клавиш, мне пришлось переназначить его на кнопку capslock. Я жил с этим нормально, используя метод реестра для замены Ctrl и Caps, но теперь мне нужно поделиться этой клавиатурой для парного программирования. Основная проблема, с которой я столкнулся, заключается в том, что я больше не могу использовать сочетания клавиш ctrl-shift-с кнопкой Capslock. Вот мой скрипт autohotkey.

+Space::Send _
#InstallKeybdHook
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
 if GetKeyState("CapsLock", "T") = 1
 {
   SetCapsLockState, off
 }
 else if GetKeyState("CapsLock", "F") = 0
 {
   SetCapsLockState, on
 }
}
return

Обратите внимание, что у меня также есть строка для сдвига пространства, чтобы отправить подчеркивание. Я не знаю, как настроить это, чтобы закрыть все возможные дыры. Я ценю любой вклад в оптимизацию этого скрипта.

1 ответ1

0

Спасибо +Dymn в #ahk за помощь в решении этого вопроса и устранение всех ошибок со мной. Некоторые из обнаруженных нами недостатков: Ctrl +Shift + работает только тогда, когда Ctrl является первым нажатым, Capslock продолжал переключать CAPS, когда это была не первая нажатая клавиша, даже если другая клавиша была нажата до или после, и другие. Я проверил это, и оно кажется намного более надежным, без видимых ошибок.

#InstallKeybdHook
+Space::Send _
CapsLock::
#UseHook On
Send {LControl Down}
KeyWait,CapsLock
Send {LControl Up}
KeyWait, CapsLock
IF (A_PriorKey = "CapsLock") {
  IF GetKeyState("CapsLock", "T") = 1 {
    SetCapsLockState, OFF
  }
  Else If GetKeyState("CapsLock", "F") = 0 {
    SetCapsLockState, ON
  }
}
Return
+CapsLock::
Send {LControl Down}
KeyWait,CapsLock
Send {LControl Up}
Return
#UseHook OFF

Этот сценарий неоценим для меня. Я просто надеюсь, что кто-то еще найдет это полезным, как я.

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