Asignación de bloqueo de mayúsculas a escape y control en Windows 7

Asignación de bloqueo de mayúsculas a escape y control en Windows 7

Quiero poder asignar la tecla Bloq Mayús a Escape si no se presiona con ninguna otra tecla y Control si se presiona. ¿Cómo puedo hacer eso en Windows 7?

Respuesta1

Esto puede haber aparecido en el mencionado anteriormente.página wikia vimdespués de la solución de Rich anterior.

; Author: fwompner gmail com
#InstallKeybdHook
SetCapsLockState, alwaysoff
Capslock::
Send {LControl Down}
KeyWait, CapsLock
Send {LControl Up}
if ( A_PriorKey = "CapsLock" )
{
    Send {Esc}
}
return

Este no es mi trabajo, pero comencé a usarlo y funciona exactamente como se describe, sin advertencias reales, y como no intenta asignar ninguna excepción (porque son innecesarias), se comporta bastante bien en Chrome (realmente Lo quería para Vimium).

Respuesta2

Puedes reasignarlo a Escape conllaves afiladas

Sin embargo, no conozco una forma realista de realizar una reasignación condicional, aparte de escribir un controlador de teclado.

Respuesta3

Esto no es exactamente lo que quieres, pero está muy cerca si puedes vivir con algunos defectos. Aquí hay unAutoHotKeyguion:

$CapsLock::LControl
$CapsLock Up::Send {Escape}
return

Reasigna Bloq Mayús a Ctrl y envía Escape cuando sueltas la tecla. Me tomó un tiempo acostumbrarme a que se presionara la tecla Escape cada vez que soltaba la tecla Bloq Mayús. Sin embargo, es bastante inútil en las áreas de texto del sitio web porque al presionar Escape se pierde el foco en el área de texto.

Aunque estoy buscando una solución a esto. Podría llegar a escribir algún tipo de controlador/enganche de teclado en C si es necesario, jaja.

Molestias específicas de Vim: hace que sea imposible escribir dígrafos usando la combinación Ctrl-K y, en general, es simplemente molesto antes de que te acostumbres. Sin embargo, funciona bien para mí porque haría cualquier cosa para evitar las teclas Esc y Ctrl tanto como sea posible.

Respuesta4

Yo uso lo siguienteAutoHotkeyguión para esto, adaptado deuno que encontré en Vim Tips Wiki. La implementación es un poco complicada, pero "funciona para mí". (Y a diferencia de las otras respuestas en esta página a partir del 19 de septiembre de 2016, resuelve completamente el problema sin ninguna advertencia que yo sepa).

El codificador original señaló:

El script también intenta detectar y evitar "falsos positivos" cuando presiona Control y otra tecla y suelta ambas demasiado rápido, es decir, antes del período de tiempo de espera.

Asegúrese de modificar el valor de 250 ms según qué tan bueno o malo sea su teclado y su propio tiempo de reacción. Probablemente esto sea algo que puedas modificar experimentalmente a tu gusto.

CapsLockCtrlEscape.ahk esencia:

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

información relacionada