Primero, las buenas noticias
La consola del sistema Linux tiene absolutamente su propio conjunto de asignaciones de teclado, que se pueden administrar utilizando las herramientas del kbd
paquete, específicamente dumpkeys
y showkey
para descubrimiento y loadkeys
para cargar en un mapeo personalizado. La pregunta de SuperUser ¿Cómo cambiar el mapa de teclas de la consola en Linux? tiene una respuesta con buena información sobre cómo usar estas herramientas.
Ahora, las malas noticias
Si bien es cierto que esas herramientas le permitirán reasignar las teclas en la consola de Linux, sin involucrar a xmodmap
o requiriendo que X se esté ejecutando, solo afectan las asignaciones de teclas en la consola de texto virtual. Los cambios no tendrán absolutamente ningún efecto en el entorno gráfico, porque el sistema XInput/evdev de X lee los dispositivos de entrada directamente y realiza su propio procesamiento.
Entonces, si esperaba evitar usar xmodmap
simplemente reasignando en la consola y haciendo que se aplique en todas partes, me temo que eso no funcionará. De hecho, necesitaría reasignar ambos la consola (usando loadkeys
) y X11 (usando un método como xmodmap
), para usar el mismo diseño de teclado en todas partes.
La solución al xmodmap
lentitud (y errores, ya que sus reasignaciones fallan y no son persistentes en entornos de escritorio que usan cambios de diseño) sería definir un nuevo diseño de teclado basado en el diseño que estaba usando anteriormente, en lugar de aplicar modificaciones de tiempo de ejecución. En el inicio de X, cargaría ese diseño nuevo y reasignado en lugar de lo que esté usando ahora. (Parece que este es ahora el único forma de modificar de manera confiable la distribución del teclado en Ubuntus recientes, y posiblemente en otras distribuciones, como su xmodmap
ya no es útil.)
Para obtener información sobre cómo definir y usar un xkb
personalizado disposición del teclado, consulte:
- Cómo:Definiciones de diseños de teclado personalizados en la Wiki de la comunidad de Ubuntu.
- Cómo modificar un diseño de teclado en Linux, una publicación de blog de Romano Giannetti.
Ambos fueron escritos este año (2014), por lo que la información debe estar actualizada. La información de la wiki de Ubuntu debería ser aplicable a cualquier distribución, en su mayor parte, ya que todas usan el xkb
sistema en X.
En realidad, hay formas de reasignar a un nivel lo suficientemente bajo como para aplicarlo a todo el sistema, X11 o no, y se han vuelto más importantes que nunca ahora que estamos viendo la aceptación de los compositores de Wayland que no exponen una interfaz de usuario para la reasignación de libinput. apoyo.
Básicamente, debe reconfigurar cómo la capa de entrada del kernel traduce los códigos de escaneo sin procesar en códigos clave antes de que lleguen a la consola o a la API evdev sobre la que se asientan X11 y Wayland.
Conozco dos formas de hacerlo:
-
Modificar la base de datos de hardware (
hwdb
) entrada para su teclado. udev te permite hacer eso agregando archivos de reglas a/etc/udev/hwdb.d/
y activar una reconstrucción de la base de datos consystemd-hwdb update
, y luego obligarlo a que se aplique sin reiniciar a través deudevadm trigger
.Esta página de ArchiWiki tiene instrucciones completas y dice explícitamente que funcionará tanto para X11 como para entrada de consola.
-
Hay un demonio llamado evdevremapkeys que se escribió específicamente para reasignar eventos clave en dispositivos evdev para admitir la reasignación de parches mono en clientes evdev que no los admiten, como los compositores de Wayland.
Básicamente, utiliza el mismo enfoque que los controladores de espacio de usuario como G15Daemon, que necesitan compensar los dispositivos de entrada no estándar. (Abra el dispositivo evdev, trague cualquier evento que pretenda reasignar, para que nadie más que escuche en el dispositivo pueda verlos, luego emita los eventos corregidos a través del
uinput
API para crear dispositivos de entrada a nivel de kernel desde el espacio de usuario).