¿Cómo puedo configurar la distribución del teclado para la pantalla de inicio de sesión antes del primer inicio de sesión exitoso en CentOS 7?

¿Cómo puedo configurar la distribución del teclado para la pantalla de inicio de sesión antes del primer inicio de sesión exitoso en CentOS 7?

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/.profilepara 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:

  1. Defina una nueva distribución de teclado, llámela symmetriy 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 con locatectl list-keymaps, ni loadkeys, ni tocando /etc/vconsole.conf.

  2. setxkbmap symmetripara usarlo. Se aplicaron cambios. Insértelo /etc/profile.d/symmetri.shpara usarlo en el perfil de usuario.

  3. Cierro sesión y cuando intento iniciar sesión, deja de funcionar y aparece QWERTY.

  4. Inicio sesión con QWERTY y luego uso Symmetri ahora, porque el script se obtiene al iniciar sesión correctamente.

  5. Abro la terminal, vuelvo a usby setxkbmap us,

Y luego,

localectl set-x11-keymap symmetri

Esta vez, el diseño no cambia. localectl set-keymap symmetrini.

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.lstporque según algunas fuentes, el lstarchivo es la versión compilada de xml, pero yo dudo si todos los procesos que dependen de estos archivos solo leerán xmlarchivos, por lo que agrego ambos. En realidad, xmltiene más información que lst, pero lstes 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: iso639Iddebe 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 usaquí.

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.xmly 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 

localectlcan list-x11-keymap-layoutsy list-x11-keymap-variants, pero no puedes establecer una variante con él; sólo setxkbmappuede.

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 .bashrcscripts 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)

  1. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11

información relacionada