Cómo cambiar la distribución para el teclado USB de Android

Posted by fedogamer on Monday, September 30, 2024

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 http y no un https. Si intentan entran con https les 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.