Reasignación compleja de teclado en Linux

Reasignación compleja de teclado en Linux

Aquí hay otra pregunta sobre la reasignación de claves en distribuciones modernas de Linux.

Fondo:

He sido usuario de Mac durante los últimos seis años y usuario de Linux durante aproximadamente 20 años. Esto ha causado dos problemas:

  • Codificar en un teclado sueco en una Mac es horrible, por lo que me vi obligado a usar un diseño estadounidense mientras codificaba.
  • Cambiar constantemente entre diseños de teclado en Linux y Mac

En Mac, hice algunos cambios en el diseño de EE. UU. para tener acceso a los caracteres suecos (å, ä, ö). Para obtener esos caracteres en un teclado sueco, normalmente hay tres teclas a la derecha del teclado. Los he reasignado con Ukelele para que normalmente funcionen como en un diseño de EE. UU., pero al presionar "alt" (o "alt+shift") obtengo los caracteres suecos. Después de un tiempo de acostumbrarme, funciona muy bien.

En segundo lugar, es bastante común que los usuarios de Linux reasignen las teclas ctrl-win-alt para que la tecla win actúe como una segunda tecla ctrl. Esto hace que la mayoría de los atajos funcionen igual en Mac y Linux. Hay una configuración para esto en GNOME (o GNOME Tweaks): "Ctrl está asignado a Win y las teclas Ctrl habituales".

Pero el orden todavía no es el mismo que en un teclado Mac: el Mac tiene "comando de opción de control", pero el teclado de una PC tiene "ctrl win alt". Hay otra opción en Ajustes de GNOME: "Alt se intercambia con Win". Desafortunadamente, GNOME Tweaks solo permite una de estas opciones.

Aquí está la reasignación completa que quiero (basada en un diseño de EE. UU.):

  • Alt + "[" => å
  • Alt + Mayús + "['"=> Å
  • Alt + "'" => ä
  • Alt + Mayús + "'" => Ä
  • Alt + ";" => ö
  • Alt + Mayús + ";" => Ö
  • Ctrl izquierdo => Ctrl izquierdo
  • Victoria izquierda => Alt izquierda
  • Alt izquierda => Ctrl izquierda

Desafortunadamente, parece haber muchas opciones para lograr esto, y todas ellas son bastante difíciles de hacer bien, ¡así que agradecería cualquier ayuda al respecto!

(En Mac pude hacer esto usando Ukelele, una herramienta gráfica para crear una distribución de teclado que luego se instala para que pueda cambiar a él tan fácilmente como se puede cambiar entre una distribución estadounidense o sueca. Muy bueno).

Actualizar:

Tengo la parte Ctrl/Alt/Win resuelta. Creé un nuevo archivo (llamado "jomag" en mi caso) y lo coloqué en "/usr/share/X11/xkb/symbols/":

partial modifier_keys              
xkb_symbols "jomag" {     
        key <LALT> { [ Control_L, Control_L ] };     
        key <LWIN> { [ Alt_L, Alt_L ] };             
        modifier_map Control { <LALT>, <LWIN> };     
};                        

También agregué una línea a /usr/share/X11/xkb/rules/evdev:

! option     =    symbols
jomag:jomag  =    +jomag(jomag)    <--- this one

Aunque no estoy seguro de que fuera necesario.

Descubrí que la mejor manera de cargarlo es usando setxkbmap:

setxkbmap -option jomag:jomag

Para recargar, ejecute con la opción vacía:

setxkbmap -option
setxkbmap -option jomag:jomag

información relacionada