O remapeamento do Caplock para teclas modificadoras falha na repetição do teclado

2

Eu remapeei a minha tecla Caps lock para Ctrl + Alt + Deslocamento baseado em esta resposta de superusuário

; Caps lock becomes ctrl+alt+shift
*CapsLock::
  SetKeyDelay -1
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

*CapsLock up::
  SetKeyDelay -1
  Send {Blind}{Ctrl Up}{Alt Up}{Shift Up}
return

E então, para obter a navegação no estilo Vim, eu tentei remapear h j k l para as minhas setas. Eu tentei várias abordagens que não funcionaram de todo. Eu estabeleci a seguinte abordagem porque funciona para pressionamentos de tecla única. Mas quando eu seguro, por exemplo, Caps lock J no Eclipse, o Ctrl Alt J O atalho de teclado é acionado em vez de simplesmente descer uma linha. Só se apaga para repetições de teclado automáticas, nunca para o pressionamento de tecla original.

^!+h::
  Send {Left}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

^!+j::
  Send {Down}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

^!+k::
  Send {Up}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

^!+l::
  Send {Right}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

Percorrer 20 linhas pressionando J 20 vezes é muito tedioso. Alguém tem uma solução ou estou usando algo de forma inadequada? Eu tenho alguns outros comandos mapeados para Caps lock e Capslock Win (tecnicamente mapeado para ^! + E ^! + #), Então correções preferivelmente não os quebre. Por exemplo:

; Caps lock + i becomes escape
^!+i::
  Send {Escape}
  Send {Blind}{Ctrl DownTemp}{Alt DownTemp}{Shift DownTemp}
return

Isso funciona bem agora porque não tive a necessidade de manter pressionada a tecla Esc . Obrigado!

    
por Daniel Koverman 06.12.2012 / 18:19

1 resposta

2

Este é um tipo de alternativa ao que você está fazendo atualmente. Eu fiz isso de modo que o CapsLock simplesmente alterna a variável cmd . Com base nessa variável, suas chaves de movimento estão ativadas. Qualquer uma dessas chaves pode ser realizada para repetir várias vezes.

Eu também forneci alguns métodos, que podem ser exagerados por agora, mas podem ser úteis depois.

*CapsLock::    cmd := 1
*CapsLock up:: cmd := 0

#if cmd
    h::Key("left")
    j::Key("down")  
    k::Key("up")    
    l::Key("right")
    n::Key_repeat("^", "left")
    p::Key_repeat("^", "right")
#if

Key(key)
{
   SendInput {blind}{%key%}
}

Key_repeat(pfx, key)
{
    SendInput {blind}%pfx%{%key%}
}
    
por 07.12.2012 / 22:06

Tags