Ligação automática (CapsLock + D + J) para (Apagar)

0

Estou tentando sobrecarregar meu teclado.

CapsLock & J :: Enviar {Esquerda} ..é a seta para a esquerda, você pode adivinhar as outras direções.

CapsLock & H :: Enviar ^ {Esquerda} ..é pular palavra esquerda.

Comecei adicionando muito extra e estou ficando sem chaves, então pensei em introduzir modificadores extras, como D poderia ser de "Delete modifier". CapsLock + D + J excluiria um formato de caractere à esquerda (como a tecla de retrocesso), o CapsLock + D + L excluiria um caractere da direita (como a tecla Delete).

Além disso, S seria meu modificador Speedy como Ctrl, que significa "pular palavras". Então, o CapsLock + S + D + J excluiria uma palavra à esquerda.

Se eu pudesse apenas ... -bind a 3+ chaves, isso resolveria. -bind a qualquer keyup / down e processá-lo em blocos if-else, isso resolveria.

Idéias apreciadas.

    
por boomla 25.03.2013 / 14:32

2 respostas

1

Três modificadores como CapsLock & H & D não podem ser usados.

Você pode usar o GetKeyState e combiná-lo com teclas de atalho e if ou alternar instruções para fazer qualquer combinação.

    
por 25.03.2013 / 14:58
1

O truque para capturar qualquer evento de keyup / down é o seguinte:

*d::msgbox, d down
*d up::msgbox, d up

Note que "d baixo" é acionado muitas vezes até que você o libere. * significa qualquer tecla modificadora como shift / alt / ctrl / win (ou nada).

Para lidar com qualquer coisa eu uso sg. assim:

updateState(key, dir) {..}

*a::updateState("a", "down")
*a up::updateState("a", "up")
*b::updateState("b", "down")
*b up::updateState("b", "up")
*c::updateState("c", "down")
...

e eu armazeno todos os estados de chave que preciso em variáveis como key_a , key_b , key_capslock , ..

Além disso, o evento atual está em uma variável como a_down , a_up , b_down , b_up , ..

Então eu posso usar instruções if-else como

if(key_capslock and key_d and key_f and j_down) {
    ; do whatever
}

Não, não consigo reconhecer qualquer diminuição de velocidade durante a digitação.

Se o CapsLock não for pressionado, use o seguinte para "passar" pela funcionalidade normal do teclado:

; DEFAULT keyboard
if(key_capslock = 0) {
    if(key_shift)
        shift := "+"
    if(key_ctrl)
        ctrl := "^"
    if(key_alt)
        alt := "!"

    if(dir="down") {
        event = {%key% down}
    }
    else {
        event = {%key% up}
    }

    SendInput, %shift%%ctrl%%alt%%event%
}

Editar: Observe que algumas teclas não podem ser detectadas ao mesmo tempo, já que (a maioria deles) possui um layout de matriz com fios horizontais e verticais. Uma vez que uma tecla é pressionada, 1 fio horizontal e 1 vertical são usados, assim, um próximo pressionamento de tecla / liberação compartilhando qualquer um desses fios não pode ser detectado com precisão. Por essa razão, não posso usar S e JKL ao mesmo tempo, portanto, uso F para FAAST em vez de S para SPEEDY. : /

    
por 27.03.2013 / 13:18

Tags