Mapeamento de Caps Lock para Escape e Control no Windows 7

17

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?

    
por Zameer Manji 23.01.2012 / 04:13

8 respostas

8

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.

    
por 23.01.2012 / 04:54
5

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.

    
por 10.04.2012 / 17:08
4

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.

CapsLockCtrlEscape.ahk gist :

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
    
por 03.01.2013 / 13:33
3

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).

    
por 09.05.2015 / 21:35
1

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:

por 13.10.2016 / 02:45
0

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.

    
por 30.01.2017 / 17:27
0

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 .

  • Primeiro, baixe o seguinte aplicativo chamado remake de duas teclas .
  • Extraia o zip em um local de sua escolha (eu armazeno utilitários como esses em C:\Users\%username%\util\ )
  • Abra o seguinte diretório: 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).
  • Faça login e logout. Alguns segundos após o login, as chaves serão recuperadas.
por 31.10.2018 / 00:02
-1

O programa remapkey.exe incluído no Windows Server 2003 Resource Kit Tools mencionado em este artigo funciona bem no Windows 7.

    
por 08.04.2013 / 17:36