Remapear uma tecla dependendo se ela foi pressionada sozinha ou não

Remapear uma tecla dependendo se ela foi pressionada sozinha ou não

Eu sei como usar o Autohotkey para remapear teclas e combinações de teclas. Se eu ligarCaps LockparaCtrl, Capslock+ Anykeyfuncionará como Ctrl+ Anykey.

Como posso vincular CapsLocksozinho a outra tecla de atalho ( Ctrl+ 1, por exemplo), mas vincular Capslock+ Anykeya Ctrl+ Anykey?

Responder1

Ok, tenho uma solução alternativa 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 por mais de 100 ms e soltá-lo, nada acontecerá. Se você pressioná-lo por menos de 100 ms e soltá-lo, ele digitará "Não". Se você pressionar qualquer tecla enquanto a mantém pressionada, ela executará control+Key. Se você mantiver Caps pressionado por menos de 100ms e conseguir pressionar qualquer tecla antes de liberar Caps, ele executará control+Key e digitará "Não". Você pode variar o tempo. Isso é o melhor que pude fazer, talvez haja uma maneira melhor.

Responder2

Eu escrevi um programa em C++ que faz exatamente isso. Ele remapeia a chave Apps em vez de Capslocks, mas seria trivial modificá-la. O código fonte (e mais informações) está no github emhttps://github.com/russelldavis/KeyFix4000

informação relacionada