Remapear uma chave dependendo se foi pressionada sozinha ou não

3

Eu sei como usar o Autohotkey para remapear teclas e combinações de teclas. Se eu ligar CapsLock a Ctrl , CapsLock + Anykey funcionará como Ctrl + Anykey .

Como posso ligar CapsLock sozinho a outra tecla de atalho ( Ctrl + 1 , por exemplo), mas ligar Capslock + Anykey para Ctrl + Qualquer tecla ?

    
por Malabarba 19.12.2010 / 23:49

2 respostas

1

Ok, eu tenho uma solução imperfeita:

Capslock::Control  ;--Holding Caps = holding Ctrl

Capslock Up:: ;--If you press Caps fast, it types "No"
SendInput, {Control Up}  ;--For stability
If A_TimeSincePriorHotkey < 100  ;--Vary the time as it suits you
{
Sendinput, No  ;--Replace with what you want Caps to do on its own
}
Else
return
return

Se você pressionar Caps down por mais de 100 ms, solte-o, nada acontecerá. Se você pressionar por menos de 100ms, solte-o e digite "No". Se você pressionar qualquer tecla enquanto a mantém pressionada, ela executará o controle + tecla. Se você segurar o Caps por menos de 100 ms e conseguir pressionar qualquer tecla antes de liberar o Caps, ele executará o controle + Key e digitará "No". Você pode variar o tempo. Isso é o melhor que eu pude fazer, talvez haja uma maneira melhor.

    
por 21.12.2010 / 16:08
1

Eu escrevi um programa em C ++ que faz isso mesmo. Ele remapeia a chave do Google Apps em vez de o Capslocks, mas seria trivial modificar. O código-fonte (e mais informações) está no github, no link

    
por 30.03.2011 / 09:34