Cambiar el método de entrada para el teclado para Windows 8.1 utilizando MDT 2013

Una de las primeras personalizaciones que hacemos al instalar Windows, dejando a un lado la forma en que se despliegue, es configurar el o los métodos de entrada que necesitamos, de acuerdo a la región en donde estemos y los idiomas que manejamos. Esto es fácilmente personalizable desde el Panel de Control > Reloj, idioma y región > Agregar idioma:

image

*Nota: Para una guía completa sobre cómo hacerlo, vean este artículo que escribí hace tiempo en la web de Fermu.com.

Aunque como ven, es mucho más fácil y flexible que en Windows 7 la forma en que se personaliza, es una gran idea automatizar y estandarizar esto en todos los equipos que se implementen de manera masiva, así que se vuelve buena práctica incluir esto en un archivo de respuesta o mejor aún, en las Reglas dentro de MDT.

Automatizar esta configuración no es complejo, pero requiere tener en cuenta algunos detalles; por este motivo, dedicaré este artículo unicamente a explicar el proceso para cambiar el método de entrada en el teclado durante la instalación de Windows 8.1 utilizando Microsoft Deployment Toolkit (MDT).

*Nota: Aquí no explicaré el paso a paso para crear un Deployment Share o agregar sus componentes, pues eso ya está documentado en este post, y aún aplica para 8.1 y MDT 2013.

Obteniendo el formato de la ubicación para el teclado

Lo primero que debemos hacer, antes de ir meter la mano en MDT, es obtener el formato de la ubicación para el teclado que deseamos predeterminar; sin bien esto no es de importancia y además es gráfico – Español (España), por ejemplo-, en una implementación es necesario pensar en términos de cómo lo reconoce el sistema operativo.

Sobre el formato de ubicación

Si monitoreamos un poco con Process Monitor, veremos que cada que agregamos un nuevo idioma en Windows 8/8.1, el sistema operativo modifica el valor Languages en la clave:

HKEY_CURRENT_USERControl PanelInternationalUser Profile

Allí, escribe el contenido de valor como texto indicando la ubicación para nuestro teclado, por ejemplo: es-ES. Como en el Panel de Control puede haber varios, el valor también contiene toda la cadena necesaria:

image

Como ven en la captura, el valor tiene es-ES, es-419 y en-GB, correspondientes a España, América Latina y el Reino Unido respectivamente.

Ahora, como subclave de User Profile, Windows crea una clave para cada distribución, y ahí genera dos valores que referencian el formato de ubicación que se está agregando:

image

El primera valor siempre será el nombre del formato en hexadecimal, y el segundo le indica al caché de Windows qué nombre informal debe mostrar en el Panel de Control. Para Español (América Latina), sería así:

image

El valor 580A:0000080A es la forma hexadecimal para referirse a en-419, que a su vez especifica Español (América Latina). El valor CachedLanguageName, tiene como contenido en su cadena Winlangdb.dll, de donde saca el texto a mostrar. Es fácil de comprobar abriendo la DLL con Resource Hacker y explorando su String Table en el nodo 2055:

image

El cache se consulta se consulta por usuario en unas subclaves que varían en nombre ubicadas en: HKEY_CURRENT_USERSoftwareClassesLocal SettingsMuiCache

Claramente, los valores de cada sublcave de User Profile van a ser diferente, pues así el sistema operativo reconoce qué formato se está agregando.

En este orden de ideas, basta con agregar un formato en un equipo online y consultar estas claves para saber su nombre en texto y/o hexadecimal; sabiendo esto, estaremos seguros de agregar el nombre exacto al MDT para predeterminal el que deseemos durante nuestra implementación.

*Nota: Por supuesto, también se puede ir a consultar en Google, pero quizá el tiempo sea más largo y los resultados más confusos.

Para la siguiente parte del artículo, tomaré como referencia el formato de Español (América Latina), es decir, 580A:0000080A como hexadecimal, o en-419 como texto.

Personalizando CustomSettings.ini y BootStrap.ini para agregar formato de ubicación

Recordemos que CustomSettings.ini y BootStrap.ini son dos archivos de configuración que utiliza el asistente de implementación de MDT, con el objetivo de mantener todas las personalizaciones y configuraciones, además de controlar el proceso de instalación. En otras palabras, aquí podemos automatizar y predeterminar todo lo que se puede hacer mientras Windows se instala en el equipo.

En nuestro servidor MDT, hacemos clic derecho sobre el Deployment Share que hayamos creado y seleccionamos Properties:

image

En la ventana de Properties, nos pasamos a la pestaña de Rules, donde veremos todo lo que está configurado para CustomSettings.ini y el acceso al BootStrap.ini:

image

Aquí debemos indiciar y personalizar  5 propiedades:
SkipLocaleSelection, KeyboardLocale, UserLocale, SkipTimeZone y TimeZoneName.

SkpLocaleSelection y SkipTimeZone nos permitirán ocultar la ventana en la que indicamos estas personalizaciones durante el asistente de instalación; KeyBoardLocale y UserLocale es donde le decimos a Windows qué formato de ubicación predeterminará. TimeZoneName recibe como valor el nombre de la zona donde nos econtremos con su formato global.

Las dos primeras propiedades basta con asignarles el valor de YES para que estén listas:

SkipLocaleSelection=YES
SkipTimeZone=YES

image

KeyBoardLocale y UserLocale reciben como valor el formato en texto o hexadecimal que previamente consultamos para nuestra ubicación del teclado. Ambos pueden ser en texto, en hexadecimal o variado.

Para mi caso, Español (América Latina), sería:

KeyboardLocale=580A:0000080A
UserLocale=es-419

image

Como dije antes, KeyboardLocale podría tener es-419 y UserLocale 580A:0000080A. No es necesario que los dos estén con un mismo tipo de valor, más sí sería lo adecuado para evitar confusiones. Como el texto es lo más natural para nosotros, podría ser:

KeyboardLocale=es-419
UserLocale=es-419

Por último, a TimeZoneName le asignaré lo que corresponde a formato de Bogotá, Lima, Quito, es decir:

TimeZoneName=SA Pacific Standard Time

Todo quedaría así:

image

Una vez hecho esto, clic en el botón de la parte inferior derecha Edit Bootstrap.ini:

image

Aquí debemos agregar también KeyboardLocale para que funcione correctamente después de instalado Windows. Lo pondré en formato hexadecimal para demostrar que puede variarse con respecto al valor de tipo texto es-419:

image

Clic luego en File > Save para que el Bootstrap.ini quede guardado con los cambios.

En la ventana de Properties, clic en Apply y luego OK para terminar.

*Nota: Para recordar, si van a agregar un formato que no sea Español (América Latina), el valor tipo texto y hexadecimal será diferente, así que es necesario verificarlo desde Windows como lo mostré al principio antes de configurar los archivos de configuración en MDT.

Actualizando recurso compartido

Por último, clic derecho en nuestro Deployment Share y seleccionamos Update Deployment Share:

image

En la ventana de Update Deployment Share Wizard, dejamos la opción predeterminada y clic en el botón Next:

image

En la ventana de Summary, clic en Next.

En la ventana de Confirmation, clic en Finish.

Probando instalación

Lo siguiente es montar la imagen LiteTouch a nuestro WDS, conectar un equipo cliente e iniciar la instalación desde MDT.

Lo primero que deben notar, es que no les aparecerá la ventana donde se solicita idioma, método de entrada y región, pues se obvio utilizando las propiedades de Skip.

Al terminar la instalación, en el Panel de Control > Reloj, idioma y región > Agregar idioma debería aparecer el formato que se indicó como predeterminado, sin importar qué idioma tenga el sistema operativo:

image

Muchas gracias a Severo Alonso, que me escribió consultando sobre este proceso y me dio una gran idea para publicar un nuevo post.

Espero les sea de utilidad.

PD: No olviden seguirme en Twitter: www.twitter.com/secalderonr