
Me doy cuenta de que al agregar
setxkbmap xxx
Podemos cambiar la distribución del teclado en el servidor X. No puede sobrevivir al cierre de sesión/reinicio, por lo que podemos agregar esta línea $HOME/.profile
para que esté disponible cuando iniciemos sesión, comoesta preguntadescribe.
Pero, cuando hacemos esto, antes de iniciar sesión, la distribución del teclado todavía no está disponible. Si queremos utilizarlo en esta etapa, ¿cuál es el camino a seguir? Estoy usando GDM en Centos7.
Lo que he probado:
Defina una nueva distribución de teclado, llámela
symmetri
y colóquela debajo/usr/share/X11/xkb/symbols/
. Para probar, puedes descargarlo.aquí.NOTA: Sólo he definido el diseño para el servidor X11, todavía no para la consola virtual.Quizás por eso no puedo enumerarlo conlocatectl list-keymaps
, niloadkeys
, ni tocando/etc/vconsole.conf
.setxkbmap symmetri
para usarlo. Se aplicaron cambios. Insértelo/etc/profile.d/symmetri.sh
para usarlo en el perfil de usuario.Cierro sesión y cuando intento iniciar sesión, deja de funcionar y aparece QWERTY.
Inicio sesión con QWERTY y luego uso Symmetri ahora, porque el script se obtiene al iniciar sesión correctamente.
Abro la terminal, vuelvo a
us
bysetxkbmap us
,
Y luego,
localectl set-x11-keymap symmetri
Esta vez, el diseño no cambia. localectl set-keymap symmetri
ni.
Respuesta1
puedes usar
localectl set-x11-keymap ***
Esto será permanente para la consola y el escritorio; se puede encontrar una configuración más detallada en la página de manualhttps://www.unix.com/man-page/centos/1/LOCALECTL/
Respuesta2
@terdon tu solución no funciona, pero gracias por ayudarme, he aprendido más; Al principio también estoy sospechando si tiene algo que ver con Gnome, pero resultó que es solo X11. Y @TimBrandrick, su solución debería funcionar en la mayoría de los casos, pero en mi caso, no sin antes agregar la distribución de mi teclado al .../X11/xkb/rules/evdev.xml
(y por si acaso, .../X11/xkb/rules/evdev.lst
porque según algunas fuentes, el lst
archivo es la versión compilada de xml
, pero yo dudo si todos los procesos que dependen de estos archivos solo leerán xml
archivos, por lo que agrego ambos. En realidad, xml
tiene más información que lst
, pero lst
es más fácil de entender).
Entonces, así es como lo hice:
1. Abrir .../X11/xkb/rules/evdev.xml
.
(Omito la parte inicial, porque difiere entre distribuciones. En CentOS 7, está bajo /usr/share/
; en Ubuntu <= 8.08, está bajo /etc/
. 1 Extraño).
2. Al final de los nodos secundarios de <layoutList>
, agregue esta parte:
(cambie según sea necesario, es solo una plantilla)
<layout>
<configItem>
<name>symmetri</name>
<shortDescription>symmetri</shortDescription>
<description>Symmetri (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
<variantList>
<variant>
<configItem>
<name>non-prog</name>
<shortDescription>non-prog</shortDescription>
<description>Symmetri for non-programmer (CN, EN and ES)</description>
<languageList>
<iso639Id>us</iso639Id>
</languageList>
</configItem>
</variant>
</variantList>
</layout>
Si la distribución de su teclado no tiene variantes, <variantList>
algunas pueden ser de cierre automático, como: <variantList />
.
Nota: iso639Id
debe tener un valor compatible con la norma ISO 639-1 o 639-2. 1 La tabla completa también se proporciona en la referencia 1. Y debe ajustarse a la configuración local. Lo configuré English(U.S)
como idioma de mi sistema, así que lo completo us
aquí.
3. Guárdelo y ábralo .../X11/xkb/rules/evdev.lst
.
4. Al final de ! layout
, agregue el nombre de su diseño. Como:
symmetri Symmetri layout (CN, EN and ES)
5. Si la distribución de su teclado tiene una variante, al final de ! variant
, agréguela también.
non-prog symmetri: non-programmer
El nombre de la variante debe coincidir con la información anterior en el archivo xml. (Mientras lo pruebo localectl list-x11-keymap-variants
,sololeer este archivo en lugar de leer el xml, debería ser un error/error.)
6. Puedes hacer lo mismo con base.xml
y base.lst
, pero yo lo hice primero y no funciona.
7. Configure la distribución de su teclado con:
setxkbmap symmetri
o, para configurar la variante, use:
setxkbmap symmetri -variant non-prog
localectl
can list-x11-keymap-layouts
y list-x11-keymap-variants
, pero no puedes establecer una variante con él; sólo setxkbmap
puede.
Con esta configuración, ahoradespués de reiniciar y antes de iniciar sesión por primera vez, tienes tu nueva distribución de teclado (aunque la variante no persistirá!! ¡Solo el diseño básico lo hará!) Pero, una vez que inicie sesión correctamente, el administrador de escritorio se hará cargo y, si no configura la nueva distribución del teclado en el archivo $HOME/.bashrc
/ $HOME/.profile
(para un solo usuario)/ /etc/profile.d/xxx.sh
/ /etc/profile
(para todos los usuarios),no¡Obtenga su nueva distribución de teclado una vez que cierre sesión y vuelva a iniciar sesión! Entonces estos cambiossolopersistir antes del primer inicio de sesión exitoso... debe usar .bashrc
scripts de perfil para decirle al servidor X: "no solo antes de iniciar sesión, sino también después de iniciar sesión, ¡lo quiero para todos los usuarios!" Cuidado: con este cambio, incluso si cierras sesión y cambias de usuario, el diseño será el cambiado, no qwerty(us)
.
Realmente frustrante... debe haber una manera más fácil, pero no la encuentro.
Referencias: (de lectura obligada)