Как сопоставить клавишу "shift" с "shift" + "capslock" с помощью AutoHotkey?

Я использую Vim, поэтому я переназначил capslock, чтобы убежать. Но я все еще хочу иногда использовать кепку. Поэтому мне интересно переназначить shift на shift + capslock:

  1. Когда сдвиг используется обычным способом: длительное нажатие и отпускание, он все равно должен работать как клавиша Shift, изменяя ввод на верхний регистр.
  2. Когда нажата клавиша shift (короткое нажатие и отпускание), она должна переключить режим блокировки.

Возможно ли что-то подобное? Кто-нибудь знает какие-либо скрипты AutoHotkey или советы о том, как сделать это, которыми они могли бы поделиться?

1 ответ

Решение

Используйте этот скрипт AutoHotkey, слегка модифицированный по ответу Эллиота ДеНольфа:

~Shift::
    duration := 0
    If (GetKeyState("Shift","p"))
    {
        start := A_TickCount
        While (GetKeyState("Shift"))
            Sleep, 1
        duration := A_TickCount - start
    }
    if (duration < 100) ;Change this value as needed
        if GetKeyState("CapsLock", "T") = 1
        {
            SetCapsLockState, off
        }
        else if GetKeyState("CapsLock", "T") = 0
        {
            SetCapsLockState, on
        }
    Return

Если клавиша Shift нажата менее 100 миллисекунд и отпущена, она переключит клавишу CapsLk. Больше 100 мсек, и он будет действовать как обычный ключ-модификатор.

Если 100 мс слишком длинно, выберите соответствующее значение в if состояние.

Другие вопросы по тегам