¿Cómo hago que la tecla Bloq Mayús sea una tercera tecla Shift?

19

¿Cómo hago que la tecla Bloq Mayús funcione como otra tecla Shift?

Aquí hay muchas preguntas sobre reasignarlo o hacer que ejecute un comando personalizado. Solo quiero que funcione como otra tecla Shift. No quiero ninguna otra clave para cambiar lo que hacen, solo esa.

El comportamiento de la tecla Diseño de teclado / Bloqueo de mayúsculas no lo hará, no entiendo cómo reasignarlo en CCSM.

Estoy usando un teclado del Reino Unido ahora, pero aprendí a escribir en un teclado de EE. UU., La tecla Shift izquierda más pequeña es DRIVING ME NUTS.

Tom Brossman
fuente
1
@ David-yourfriend OP dijo específicamente xmodmapque no funciona.
TheWanderer
1
En xkb, esto parece tener algo que ver con los mapas de compatibilidad que traducen ciertas combinaciones de teclas en acciones, en lugar de símbolos. Esto llevará más tiempo de investigación y prueba de lo que tengo disponible en este momento. Si tengo la oportunidad, profundizaré más en esto, si no es así, esta miga de pan guiará a otra persona en la dirección correcta.
Élder Geek

Respuestas:

14

Ampliando en @ Zacharee1 respuesta:

hacer una copia de seguridad con cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

luego edite con gksu gedit /usr/share/X11/xkb/symbols/pco con su editor favorito.

Encuentre la línea (22) que dice:

key <CAPS> { [ Caps_Lock ] };

y cambiarlo a

key <CAPS> { [ Shift_L ] };

y la línea (36) que dice:

modifier_map Lock { Caps_Lock };

y cambiarlo a

//modifier_map Lock { Caps_Lock }; (que debería comentar en efecto deshabilitar el bloqueo)

Las pruebas indican que Num Locktodavía funciona como se esperaba. Pruebas adicionales indican que las luces indicadoras del teclado parecen ser un poco disléxicas en 16.04 incluso en un sistema no modificado. El indicador de bloqueo de desplazamiento se enciende al iniciar sesión pero el bloqueo de desplazamiento se apaga y la luz de bloqueo numérico se apaga, pero el bloqueo numérico se enciende. Tocar la Ctrltecla izquierda parece resolver este comportamiento y no estoy seguro de si está relacionado con mi uso de un conmutador KVM (que es posible)

Nota: Las pruebas adicionales muestran que la luz indicadora de NumLock es escamosa incluso sin un interruptor KVM y debe tocarse dos veces para volver a sincronizarse con NumLock. Si siempre la deja encendida, puede ignorar la luz o, si le molesta, puede tocarla. dos veces para volver a sincronizarlo. Por qué ocurre esto es probable que sea la base de una nueva pregunta ...

Otra solución simple a su problema original sería simplemente obtener un teclado económico de EE. UU. Y utilizar la asignación de teclado de EE. UU.

Fuentes: respuesta y análisis de @ Zacharee1 /usr/share/X11/xkb/symbols/pcy pruebas de prueba y error

Elder Geek
fuente
¿Entonces tuviste que deshabilitar esa línea 36? Solo Shift_Lcambiarme fue suficiente para deshabilitar completamente el bloqueo de mayúsculas para mí.
TheWanderer
@ Zacharee1 Pensé que podría ser la causa del impacto en Numlock que Tom Brossman mencionó en un comentario en su publicación y lo sacó solo por esa razón.
Élder Geek
Hmm Eso podría ser. Estoy viendo si puedo hacer que Zanna pruebe con una máquina virtual, ya que tiene una placa del Reino Unido.
TheWanderer
@ Zacharee1 Eso sería genial, ya que no tengo ese hardware disponible para las pruebas y, a menudo, confío en la lógica en los casos en que no es posible realizar una prueba completa.
Élder Geek
Eso lo hizo finalmente, probado y funcionando (al menos por ahora). Es extraño que la luz de Bloq Num en mi teclado esté apagada, pero las teclas numéricas adicionales están habilitadas por defecto cuando inicio sesión y eso es lo que buscaba. ¡Gracias!
Tom Brossman
10

Puede llegar allí adaptando ¿Cómo cambiar la tecla Bloq Mayús para producir "a"? (por ejemplo).

Elimine el Lockmodificador (= Bloq Mayús) de la Caps Lockclave y declare que esta clave envía el Shift_Lkeyym.

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

Alternativamente, puede eliminar el Lockmodificador y agregar el Shiftmodificador.

remove Lock = Caps_Lock
add Shift = Caps_Lock

De cualquier manera, estas líneas van al archivo ~/.Xmodmap. Pruebe cargándolo con xmodmap ~/.Xmodmap; el archivo se lee automáticamente cuando inicia sesión en el entorno predeterminado (o al menos en los días de Gnome).

Gilles 'SO- deja de ser malvado'
fuente
2
Perfecto, eso funcionó. Hice un nuevo documento vacío en mi directorio de inicio llamado '.Xmodmap', y pegué su primer ejemplo en él. Luego escribí 'xmodmap ~ / .Xmodmap' en el terminal para que surta efecto de inmediato. Ambos se explican en la respuesta vinculada. Gracias.
Tom Brossman el
El segundo conjunto de comandos no funciona para mí, pero el primero funciona muy bien. Presionar el bloqueo de mayúsculas ni siquiera enciende la luz del teclado, por lo que ni siquiera activa mi TOC latente.
Waldir Leoncio
Buena respuesta, Gilles! Solo para agregar a su respuesta, esto también se puede hacer como un solo comando: xmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" y deshacerlo setxkbmap -option , lo que no escribe en el ~/.Xmodmaparchivo, pero puede usarse cuando sea necesario y agregarse a las Aplicaciones de inicio. Muy buena respuesta!
Sergiy Kolodyazhnyy
7

Ignorando mis intentos anteriores de responder que falló, encontré algo que convierte el bloqueo de mayúsculas completamente en desplazamiento a la izquierda. Sin alternar, creo que es persistente, y es bastante simple.

Primero, recomendaría hacer una copia de seguridad, antes de presentarles cómo cambiarla.

correr sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Ahora que hay una copia de seguridad, pasemos a la edición.

Use su editor de texto favorito para editar este archivo como root:

/usr/share/X11/xkb/symbols/pc

Encuentre el segmento que se ve así (está cerca de la parte superior, línea 22 para mí):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

editar

key <CAPS>  {   [ Caps_lock             ]   };

ser - estar

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

en lugar. (El Caps_Lockafter Shift_L,puede ser innecesario).

Reinicie su administrador de pantalla (generalmente sudo service lightdm restart) y el bloqueo de mayúsculas ahora se desplazará a la izquierda. ( Nota: mi máquina de prueba usa GNOME, así que tuve que reiniciar gdm. Sin embargo, eso causó algunos parpadeos extraños en el TTY alternativo y gdmnunca se reinició. Tuve que reiniciar por completo).

Este realmente pude probarlo y puedo confirmar que funciona.

Adaptado de xmodmap permanente en Ubuntu 13.04

El vagabundo
fuente
Gracias, pero esto interfiere con Num Lock que dejo permanentemente. En mi primera solución de problemas, cambiar Caps_lock> Shift_L /usr/share/X11/xkb/symbols/capslocktambién interfería con Num Lock. Hay algo diferente en 16.04, por ejemplo, la luz de Bloq Num solía permanecer encendida durante el arranque, pero ahora se apaga al iniciar sesión LightDM. Cuando pruebo su solución, cambia Bloq Mayús a Mayús, pero la primera vez que presiono Bloq Mayús, el Bloq Num se desactiva y tengo que presionar Bloq Num DOS VECES para volver a activarlo (solo la primera vez). Extraño. Realmente aprecio la ayuda hasta ahora.
Tom Brossman
Quizás necesito hacer una nueva pregunta "¿Cómo evitar la interferencia de reasignación de Caps Lock con Num Lock en 16.04?" pero me encantaría encontrar la causa raíz aquí. O eso, o es hora de abrir el teclado y hacerle algunas modificaciones físicas ...
Tom Brossman
Eso es raro. ¿Funciona numlock nuevamente si corres xkbset nullify lock?
TheWanderer
@ TomBrossman No sé si esto cambia algo para ti, pero funciona para mí. En lugar de solo Shift_L, ponlo Shift_L, Caps_Lock. Asegúrese de que los soportes se alineen.
TheWanderer
1
@TomBrossman Me gusta usar sudo si no es peligroso, solo para estar seguro: p. Cuando edité el archivo, la letra L para mayúscula era mayúscula y también la de mayúsculas. Extraño. Lo de NumLock también es extraño, ya que funciona bien para mí. Todo esto es extraño: p
TheWanderer
3

Para 14.04

Una frase:

xmodmap -e 'keycode 66=Shift_L'

PERO , en el caso inesperado 66no es el código clave correcto, primero ejecute xeven la consola y presione CapsLock. Entonces verás algo como:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

El código clave correcto es el indicado en el XX.

Elder Geek
fuente
1
Mira el mensaje de recompensas: Xmodmap trick no longer works and xkb handles this now..
TheWanderer
¡Oh mi! ¿Es por 16.04? Funciona en mi 14.04. El comentario de recompensa parece no especificar.
No hice la recompensa, así que realmente no lo sé.
TheWanderer
Lo sentimos, esto es para una nueva instalación de 16.04. La tecla Mayús izquierda o derecha estaría bien, elegí la pregunta izquierda porque es adyacente y las xevveo como teclas diferentes.
Tom Brossman