Cómo cambiar la distribución para el teclado USB de Android
Durante mis estudios en la carrera de Ciencias de la Computación, no fueron pocas las veces en las que tuve que trabajar desde mi teléfono celular o desde alguna tableta, ambas con Sistema Operativo Android.
Sin embargo, a pesar de todos los años que han transcurrido, aún no hay muchas formas de personalizar la distribución del teclado que conectas a tus dispositivos vía OTG, es decir, a través del cable USB. Dado que estoy acostumbrado a usar el teclado Dvorak en su distribución latam, me enfrentaba constantemente a la dificultad de lidiar con el teclado QWERTY que viene por defecto al conectar mi teclado a mi dispositivo, o en el mejor de los casos, a usar Dvorak US, con el cual tenía que detenerme a corregir constantemente entre distintos símbolos.
Dada mi frustración, me puse a investigar un poco y encontré una solución bastante práctica de manos del dessarrollador ris58h, quien en su página de GitHub muestra una manera de modificar la distribución del teclado físico. En este post me limitaré a mostrar los cambios que hice para el teclado latam.
flowchart TD
%% Definición de estilos (basados en CleanWhite)
classDef start_end fill:#fff,stroke:#0085a1,stroke-width:2px,color:#0085a1,font-weight:bold
classDef decision fill:#f8f9fa,stroke:#333,stroke-width:1px,color:#272
classDef action fill:#fff,stroke:#ddd,color:#555
classDef highlight fill:#0085a1,stroke:#0085a1,color:#fff,font-weight:bold
Start([Inicio]) --> Input[/¡Quiero configurar mi teclado para Android!/]
Input --> B(Clonar el repositorio oficial)
B --> C(Modificar el teclado)
C --> D{¿Gráfico o Manual?}
D --> |Gráfico| E(Método gráfico)
E --> F(Entrando a la página web)
D --> |Manual| G(Método manual)
G --> H[/Descargando los cambios/]
F --> H
H -.-> End
Input ~~~ C
%% Asignación de clases a los nodos
class Start,End start_end
class D decision
class B,C,E,F,G action
class H highlight
Clonar el repositorio oficial:
Cabe aclarar que el siguiente tutorial está basado en Linux, sin embargo, no debería ser muy diferente la ejecución desde un sistema Windows o MacOs siempre que hayan instalado la herramienta GIT para ser ejecutada desde sus terminales.
Simplemente escribiremos el siguiente comando en la terminal para clonar el repositorio en nuestra computadora:
$ git clone [email protected]:ris58h/exkeymo-web.git && cd .exkeymo-web/
Modificar el teclado
Desde aquí tenemos dos opciones, una opción gráfica, y para los que les gusta editar código, edición directa de los teclados .kcm .
Método gráfico
Una vez que tengamos el repositorio compilaremos el proyecto con (asegúrate de tener Java instalado):
./mvnw clean install
Luego ejecutamos el servidor localmente con el siguiente código:
java -jar target/exkeymo-server-*-jar-with-dependencies.jar
Entrando a la página web
Una vez que el servidor se esté ejecutando, debería ver algo como lo siguiente:
2024-09-30 13:09:39 -0600 [main] INFO ris58h.exkeymo.web.Server - Server started at port 8080
Luego abrimos nuestro navegador web favorito e ingresamos a: http://localhost:8080/simple.html
Tener en cuenta que la dirección tiene http y no https. Si intentas ingresar con https obtendrás un error.
Dentro de la página podrán encontrar varios campos, lo primero que recomiendo es que seleccionen en el Base Layout, el idioma del teclado que quieren cambiar, por ejemplo: Spanish (Latin).
A continuación, en From key seleccionan el botón que quieren cambiar y en To key seleccionan el nuevo caracter que quieren insertar.
Pueden agregar más cambios de caracteres con Add key map.
Si tienen todo listo hasta aquí, pueden ir directamente a la sección Descargando los cambios.
Método manual
Si lo que quieren es ir directo al grano y modificar todo un teclado sin el problema de estar picando botones, pueden dirigirse a:
src/main/resources/kcm/
En este directorio encontrarán los teclados y podrán hacer una copia de ellos y editarlos.
En mi caso particular, hice una copia del teclado español y lo adapté para mis necesidades. El archivo lo renombré como keyboard_layout_spanish_latin_Dvorak.kcm. Si te interesa lo puedes encontrar más abajo.
A continuación debes agregar el teclado a los layouts del archivo html. Este se encuentra en:
src/main/resources/public/simple.html
Si estás siguiendo mi ejemplo, en la línea 975 del archivo, deberías agregar lo siguiente:
<option value="keyboard_layout_spanish_latin_Dvorak.kcm">Spanish (Latin, Dvorak)</option>
Luego realizamos una compilación del proyecto con:
./mvnw clean install
Y ejecutamos el servidor web con:
java -Dserver.port=8080 -jar target/exkeymo-web-*-jar-with-dependencies.jar
Si todo va bien, deberíamos ver algo como:
2024-09-30 13:09:39 -0600 [main] INFO ris58h.exkeymo.web.Server - Server started at port 8080
Entonces abrimos nuestro navegador web favorito y entramos a: http://localhost:8080/simple.html
Nótese que es un
httpy no unhttps. Si intentan entran conhttpsles producirá un error.
Finalmente, en Base Layout seleccionamos nuestro teclado modificado Spanish (Latin, Dvorak) y hacemos alguna sustitución trivial.
En mi caso: EXPLORER -> F5.
Una vez hecho esto continuamos con la descarga del apk.
Descargando los cambios
Una vez realizados los cambios pertinentes presionan el botón Download. Esto iniciará una descarga de un archivo .apk, el cual, al instalar en su teléfono Android, ya podrán seleccionar el teclado físico ExKeyMo Layout (conectar el teclado físico y dar click en configurar teclado físico).
Una vez seleccionado, ya deberían poder ver los cambios en el teclado físico.
Las capturas de pantalla, diagramas y videos en este artículo son creación de fedogamer.