Você pode remapear para Escape com SharpKeys
No entanto, não conheço uma maneira realista de executar remapeamento condicional, além de escrever um driver de teclado.
Eu quero poder mapear a tecla Caps Lock para Escape se ela não for pressionada com qualquer outra tecla e Control se estiver. Como posso fazer isso no Windows 7?
Você pode remapear para Escape com SharpKeys
No entanto, não conheço uma maneira realista de executar remapeamento condicional, além de escrever um driver de teclado.
Isto não é exatamente o que você quer, mas muito próximo, se você pode viver com algumas falhas. Veja um script AutoHotKey :
$CapsLock::LControl
$CapsLock Up::Send {Escape}
return
Ele remapeia Caps Lock para Ctrl e envia Escape quando você solta a tecla. Levei um tempo para me acostumar com a tecla Escape sendo pressionada toda vez que eu soltava a tecla Caps Lock. No entanto, é praticamente inútil em textareas de sites, pois pressionar Escape perde o foco na área de texto.
Estou procurando uma solução para isso. Eu poderia ir tão longe quanto escrever algum tipo de gancho de driver / teclado em C, se necessário, haha.
Aborrecimentos específicos do Vim: Torna os digrafos impossíveis de digitar usando a combinação Ctrl-K e é geralmente irritante antes de você se acostumar com isso. Funciona bem para mim, porque eu faria qualquer coisa para evitar as teclas Esc e Ctrl, tanto quanto possível.
Eu uso o seguinte script AutoHotkey para isso, adaptado de um que encontrei no Wiki do Vim Tips . A implementação é um pouco hacky, mas "funciona para mim". (E ao contrário das outras respostas nesta página a partir de 2016-09-19, ele resolve completamente o problema sem quaisquer advertências que eu conheça.)
O codificador original observou:
The script also tries to detect and avoid "false positives" where you press Control and another key and release both too quickly, i.e. before the timeout period.
Be sure to tweak the 250ms value depending on how good or bad your keyboard is, and your own reaction time. This is probably something to tweak experimentally to your own liking.
g_LastCtrlKeyDownTime := 0
g_AbortSendEsc := false
g_ControlRepeatDetected := false
*CapsLock::
if (g_ControlRepeatDetected)
{
return
}
send,{Ctrl down}
g_LastCtrlKeyDownTime := A_TickCount
g_AbortSendEsc := false
g_ControlRepeatDetected := true
return
*CapsLock Up::
send,{Ctrl up}
g_ControlRepeatDetected := false
if (g_AbortSendEsc)
{
return
}
current_time := A_TickCount
time_elapsed := current_time - g_LastCtrlKeyDownTime
if (time_elapsed <= 250)
{
SendInput {Esc}
}
return
~*^a::
~*^b::
~*^c::
~*^d::
~*^e::
~*^f::
~*^g::
~*^h::
~*^i::
~*^j::
~*^k::
~*^l::
~*^m::
~*^n::
~*^o::
~*^p::
~*^q::
~*^r::
~*^s::
~*^t::
~*^u::
~*^v::
~*^w::
~*^x::
~*^y::
~*^z::
~*^1::
~*^2::
~*^3::
~*^4::
~*^5::
~*^6::
~*^7::
~*^8::
~*^9::
~*^0::
~*^Space::
~*^Backspace::
~*^Delete::
~*^Insert::
~*^Home::
~*^End::
~*^PgUp::
~*^PgDn::
~*^Tab::
~*^Return::
~*^,::
~*^.::
~*^/::
~*^;::
~*^'::
~*^[::
~*^]::
~*^\::
~*^-::
~*^=::
~*^'::
~*^F1::
~*^F2::
~*^F3::
~*^F4::
~*^F5::
~*^F6::
~*^F7::
~*^F8::
~*^F9::
~*^F10::
~*^F11::
~*^F12::
g_AbortSendEsc := true
return
Isso pode ter aparecido na página wikia do vim mencionada anteriormente, após a solução de Rich acima.
; Author: fwompner gmail com
#InstallKeybdHook
SetCapsLockState, alwaysoff
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
Send {Esc}
}
return
Este não é o meu trabalho, mas eu comecei a usá-lo e ele funciona exatamente como descrito, sem ressalvas reais, e porque ele não tenta mapear nenhuma exceção (porque elas são desnecessárias) ele se comporta muito bem no Chrome (Eu realmente queria isso para o Vimium).
Na verdade, acho que criei a solução perfeita aqui:
Como usuário do Vim, isso é uma necessidade para mim, e eu uso isso com sucesso no Windows há muito tempo. Acabei de criar uma entrada em HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
com regedit para apontar para o executável e isso simplesmente funciona.
Para compilar e instalar dependências, por favor, verifique o README do repositório e o site principal da Interceptação.
Eu também criei uma versão Linux do mesmo aqui:
Aqui está uma entrada de registro que mapeia o caps lock para escapar no windows 7.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,46,00,01,00,3a,00,00,00,00,00
Salve o arquivo acima em um arquivo com extensão .reg (como mapCapLocks.reg) e importe / execute-o em sua máquina.
Eu estava procurando por algo parecido com isso, mas infelizmente os scripts do AHK das respostas aqui não funcionaram bem para mim.
No entanto, encontrei uma solução que resolveu isso para mim no wiki do vim .
C:\Users\%username%\util\
) C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
e arraste o arquivo dual-key-remap.exe para lá, enquanto mantém pressionada a tecla ALT para criar um atalho. (Ou clique com o botão direito e selecione 'criar atalho' e mova o atalho para o diretório de inicialização). O programa remapkey.exe incluído no Windows Server 2003 Resource Kit Tools mencionado em este artigo funciona bem no Windows 7.