Como mapear a tecla “shift” para “shift” + “capslock” usando AutoHotkey?

Como mapear a tecla “shift” para “shift” + “capslock” usando AutoHotkey?

Estou usando o Vim, então remapeei capslockpara esc. Mas eu ainda quero capslockàs vezes. Então, estou pensando em remapear shiftpara shift+ capslock:

  1. Quando shiftusado da maneira normal: pressione e solte longamente, ainda deve funcionar como shifttecla mudando a digitação para maiúsculas.
  2. Quando shifté tocado (pressione e solte brevemente), ele deve alternar capslock.

Algo assim é possível? Alguém conhece algum script AutoHotkey ou dicas sobre como fazer isso que possa compartilhar?

Responder1

Use este script AutoHotkey ligeiramente modificado deResposta de Elliot DeNolf:

~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

Se a Shifttecla for pressionada por menos de 100 milissegundos e liberada, ela será alternada CapsLk. Qualquer valor superior a 100 mseg funcionará como uma tecla modificadora normal.

Se 100 ms for muito longo, escolha um valor apropriado na ifcondição.

informação relacionada