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

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

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

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

Возможно ли что-то подобное? Кто-нибудь знает скрипты 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условии.

Связанный контент