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.
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.
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.
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. : /
Tags autohotkey