Cambiar el bloqueo de mayúsculas para controlar en la consola virtual en Ubuntu 17

10

Me gustaría cambiar el comportamiento del bloqueo de mayúsculas en terminales virtuales (tty, por ejemplo CtrlAltF3) para que actúe como un modificador de control. Idealmente, también me gustaría que actúe como Escape cuando se lo presiona solo, pero obtener el comportamiento de Control está resultando difícil.

Estoy ejecutando Ubuntu 17.04. He leído y probado numerosos enfoques para hacer este cambio, pero ninguno parece aplicarse a mi sistema como se describe. Tengo la sensación de que systemd juega un papel en esto, pero los detalles no están claros.

He escrito un archivo caps_control.kmap, que asigna mayúsculas para controlar,

keymaps 0-255
keycode  58 = Control

Si ejecuto loadkeys caps_control.kmapdesde una consola virtual, funciona. Ahora me gustaría que se cargue automáticamente al arrancar / iniciar sesión / lo que sea ...

Me encontrado referencias a la utilización de /etc/rc.localhacerlo, pero mi sistema no tiene tal archivo, aunque tiene varios directorios como /etc/rc0.d/, /etc/rc1.d/...

Parece que dado que Ubuntu 17 usa sytemd, debería usarlo localectlpara administrar este tipo de cosas, pero no tengo claro cómo hacerlo. Por ejemplo,

$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.

La página de manual para localectlmenciones /etc/locale.confy /etc/vconsole.confninguna de las cuales existen en mi sistema.

Estoy totalmente perdido. ¿Alguien puede señalarme en la dirección correcta?

ivan
fuente
¿Necesita este cambio para estar activo para todos los usuarios o solo para el suyo?
acer
@acer De cualquier forma me convendría, ya que realmente soy el único usuario en esta máquina.
ivan
Hmm ... Se agrega una línea en ~ / .profile con loadkeys caps_control.kmapque se ejecutará cuando se conecte.
acer
@acer Llamar loadkeysdesde ~ / .profile parece ser problemático. Cuando inicio sesión aparece un error que dice "No se pudo obtener un descriptor de archivo que se refiera a la consola".
ivan

Respuestas:

11

Para convertir el bloqueo de mayúsculas en un modificador Ctrl adicional, que también es efectivo en las consolas tty, ábralo /etc/default/keyboardpara editarlo y configurarlo:

XKBOPTIONS=ctrl:nocaps

Si ya ha XKBOPTIONSconfigurado, agregue ctrl:nocapsa su valor existente usando una coma para el separador, por ejemplo:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

Debe ser efectivo después del próximo reinicio o la emisión del setupconcomando.

La opción debe estar presente cuando se ejecuta localectl status:

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

Y en la sesión X, otra forma de verificar que está configurado es:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']
Gunnar Hjalmarsson
fuente
1
otra opción XKB es "ctrl:nocaps". en X la diferencia es sutil: con la ctrlopción, xevy otras herramientas verán un Control_Lsímbolo cuando se presione la tecla Bloq Mayús, mientras que la capsopción aún mostrará el Caps_Locksímbolo de teclado. No estoy seguro de si esa diferencia se traducirá en el mapa de teclas de la consola virtual.
quixotic
@quixotic: Gracias por mencionarlo ctrl:nocaps. Lo agregué a mi respuesta.
Gunnar Hjalmarsson
¿Alguna idea de por qué esto no funciona para mí? En realidad, es una de las primeras cosas que probé, y me gusta el enfoque. Desafortunadamente, no tiene ningún efecto en mi sistema.
Ivan
1
@ivan: acabo de probarme y descubrí que mi primera sugerencia ( caps:ctrl_modifier) no es efectiva en tty. Sin embargo, para mí (en 17.10) ctrl:nocapses. Por favor vea mi respuesta editada.
Gunnar Hjalmarsson
1
@GunnarHjalmarsson No estoy demasiado familiarizado con el método de Debian / ubuntu para traducir mapas XKB a mapas de consola (¿implica ckbcomp, creo?). No recordaba la caps:ctrl_modifieropción que mencionaste por primera vez, así que busqué para compararla con la que ctrl:nocapsuso habitualmente, y pensé que valía la pena mencionar la diferencia aquí. Me alegro de que haya sido útil.
quijotesco