Desactiva el bloqueo de mayúsculas cuando se presiona Escape

10

¿Hay alguna forma de desactivar CapsLockcada vez que Escse presiona? Sí, yo uso VIM! De hecho, tengo un diseño alternativo de teclado todo en mayúsculas Ctrl-6pero me resulta engorroso y preferiría que el sistema operativo desactive CapsLock cada vez que Escse presione. Además, a menudo utilizo SSH en otros servidores durante algunas horas, así que estoy en un VIM de stock allí.

Tenga en cuenta que ya he cambiado las teclas CapsLocky Esc. Sin embargo, cuando Escse presiona la tecla (que está etiquetada CapsLocken el teclado y está al lado A), necesito que realice ambas Escapey Disable-CapsLock-If-It-Is-Enabled.

Esto está en Kubuntu 12.10. Gracias.

dotancohen
fuente
¿Necesita agregar esa funcionalidad solo para vimel escritorio completo?
mtk
Me gustaría que fuera una función de escritorio.
dotancohen

Respuestas:

5

En X11 (en la consola no lo sé) puede hacerlo redefiniendo el comportamiento de la tecla Escape. Miré la definición "shift (break_caps)" para ver cómo funciona y la adapté.

Mire esta respuesta en xkb para obtener más detalles sobre cómo / dónde colocar los archivos modificados localmente y cargarlos.

Y para hacer lo que quiere, necesita en el archivo de símbolos locales (por ejemplo:) ~/.xkb/symbols/mysymbolsuna sección como esta:

partial modifier_keys
xkb_symbols "esc_breaks_caps" {
    key <ESC> {
        type = "ALPHABETIC",
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
};

y en el archivo de mapa de teclas local (por ejemplo:; ~/.xkb/keymap/mykbdpuede crearlo con setxkbmap -print > ~/.xkb/keymap/mykbd) cambie la xkb_symbolslínea para agregar +mysymbols(esc_breaks_caps).

Ahora puede cargarlo con: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY y al presionar Escse eliminará el estado de Bloqueo de mayúsculas (en realidad, el efecto ocurre en el lanzamiento de Esc; creo que solo las teclas modificadoras tienen efecto inmediato; otras, el efecto es después de su lanzamiento).

Ah, si desea intercambiar también las teclas Escape y CapsLock; luego use esto en su lugar (y ponga "+ mysymbols (esc_swap_and_breaks_caps)" en su archivo mykbd):

partial modifier_keys
xkb_symbols "esc_swap_and_breaks_caps" {
    replace key <CAPS> {
        type = "ALPHABETIC",
        symbols = [ Escape, Escape ],
        actions [Group1] = [
            SetMods(modifiers=none),
            SetMods(modifiers=Lock,clearLocks)
        ]
    };
    replace key <ESC> { [ CapsLock, CapsLock ] };
};

tenga en cuenta que las claves físicas son <CAPS>y <ESC>; <CAPS>(tecla grabada CapsLocken su teclado) envía Escape y <ESC>(tecla grabada Esc) envía CapsLock, con <CAPS>(envío de Escape) también el estado de bloqueo de mayúsculas

Pablo Saratxaga
fuente
1

Agregue estas líneas a ~/.Xmodmap:

clear lock
keycode 0x42 = Escape

Luego, escriba el comando:

xmodmap ~/.Xmodmap

Su Caps Lockclave ahora se reasigna a la Escclave.

URL de referencia .


Lea también este bonito artículo sobre Mapping CapsLock to Escape en Ubuntu , que parece ser un usuario de unix.se :)

mtk
fuente
Gracias. Resulta que ya he cambiado CapsLock y Esc. Sin embargo, cuando se pulsa la tecla Esc (que pasa a ser etiquetados CapsLock en el teclado y se encuentra junto a la A), lo necesito para llevar a cabo tanto de escape y -CapsLock-Si-que-sea habilitado para Desactivar. Editaré la pregunta para aclarar. Gracias.
dotancohen
Pensé que necesitabas lo contrario. Algo confundido aquí. ¿Qué sucede al presionar Escy Capslocksdespués de estos cambios?
mtk
Actualmente: al presionar la ESCtecla, la CapsLockfunción se alterna y al presionar la CapsLocktecla ESCse envía el comando (es decir, la ESCtecla se vuelve a asignar CapsLocky la CapsLocktecla se vuelve a asignar a ESC). Mi objetivo con esta pregunta es hacer que presionar la CapsLocktecla realice tanto la ESCfunción (lo que hace actualmente) como apagar la CapsLockfunción si y solo si la CapsLockfunción está habilitada (es decir, no alternar la CapsLockfunción, sino deshabilitarla si CapsLockestá habilitada).
dotancohen
1

No estoy seguro de si esto responde a su pregunta, pero para asignar la Escfunción a la CapsLocktecla, puede usar esto:

setxkbmap -option "caps:escape"

fuente