¿Cómo pongo la eñe (o cualquier otro caracter) en mi teclado personalizado?

La eñe no se pone en el teclado; estás enfocando mal el problema. Este artículo te explica lo que necesitas saber para poder escribir la eñe (o cualquier otro caracter) tranquilamente.


Los dos niveles de operación.

Cuando escribes en el teclado enchufado a tu computador, lo que ocurre funciona en dos niveles diferentes:

  1. Cuando el teclado detecta que has apretado una tecla, éste no envía al computador la letra, el número o el símbolo que la tecla tiene impresa encima, sino que un código numéricoscan code») preestablecido.

  2. El sistema operativo (Windows, Linux o algún otro) recibe ese código numérico, lo busca en una tabla de conversión, obtiene el caracter que le corresponde, y eso es lo que procesará como el “caracter recibido” para que aparezca en pantalla o lo que sea.

Esa tabla de conversión no es otra cosa que la distribución de teclado lógica o nacional que seleccionaste previamente en la configuración del sistema operativo. De esta manera, si en tu teclado aprietas, por ejemplo, la tecla C10:

Teclado IBM Model M XXK.

El teclado determina que debe enviar el scan code 0x27 al computador, de acuerdo con lo definido en este diagrama:

Diagrama de las coordenadas y los scan codes de un teclado.

El sistema operativo recibe ese 0x27 y lo convierte a...


¿Qué pasa con los teclados personalizados?

Para que un teclado, cualquier teclado, funcione, necesita tener un controlador que sepa qué scan code corresponde a qué tecla física. Típicamente, en los teclados prefabricados, el controlador tiene grabada indeleblemente la información del diagrama anterior, y nada va a alterarla.

En cambio, los teclados personalizados (amén de los conversores, tanto internos como externos) tienen la capacidad de alterar esta información a gusto del usuario. Para este efecto, sus controladores utilizan algún software (IBM Capsense [“xwhatsit”, para los amigos], Soarer, TMK, QMK, VIA, etcétera) que recibe, almacena y utiliza esta información.

Nota: en lo que sigue, por simplicidad, se hablará sólo de QMK; lo mismo que se dice para éste es aplicable a todo el resto del software ya nombrado.

A la hora de definir qué va donde... es donde empieza la confusión. Los primeros programadores que escribieron software para controladores de teclado programable usaron las leyendas de las teclas impresas en sus propios teclados (que eran todos inglés (EE.UU.)) como nombres de las teclas físicas, en vez de haber recurrido a las coordenadas definidas por el estándar ISO/IEC 9995. Así que en vez de tener como nombres las coordenadas del diagrama anterior, lo que se impuso como nomenclatura estándar para las teclas físicas es esto otro:

Diagrama de los nombres en QMK y los scan codes de un teclado.

Y luego, la cosa se puso peor: cuando se dieron cuenta de que en otros países se usaban teclados diferentes, no sólo en lo que tenían impresas por encima las teclas, sino que algunas de éstas tenían formas distintas, y que además habían variaciones de consideración en las cantidades totales de teclas disponibles, fueron y les dieron nombres a estas teclas “extra”... que resultaron ser incluso más confusos; en el caso particular de los teclados ISO (usados en ese momento en toda Europa y el grueso del continente americano), lo hicieron recurriendo al teclado inglés (Reino Unido) como única referencia, al punto de que se habló durante mucho tiempo de “teclado ANSI” como sinónimo de “teclado inglés de Estados Unidos” y “teclado ISO” como sinónimo de “teclado inglés del Reino Unido”, ambos términos absolutamente incorrectos (los motes «ANSI» e «ISO» se refieren exclusivamente a una pareja de variantes para un layout físico dado).

Lo más fastidioso de lo recién descrito es que se reinventó la rueda sin que nadie se molestase en revisar lo que IBM, dos décadas antes, había definido y documentado para cada variante física del Enhanced Layout (ANSI, ISO, ANSISO, ABNT y JIS; teclados ISANSI también, pero esos aparecieron mucho después), y para cada distribución nacional que había implementado o creado desde cero (que superaban ampliamente en cantidad a las manejadas por las demás empresas de la industria). Para colmo de males, estos nombres llegaron al estándar de USB, retroalimentando esta mala elección; ahora no queda más remedio que vivir con ello.

Pensar que esto no importa, porque “la tecla A siempre corresponde a la letra A, la tecla 0 siempre corresponde al dígito 0, la tecla Ctrl derecha siempre corresponde al modificador RCTRL, etcétera” es una idea indefectiblemente errónea, y ha sido fuente de toda clase de problemas e incomodidades. Habrá quien diga que las diferencias entre las distribuciones inglés (EE.UU.) e inglés (Reino Unido) son mínimas, que es cierto, pero... ésas son apenas dos de muchas distribuciones nacionales, y las diferencias que poseen las demás respecto de ambas son enormes, mucho más que simplemente cambiar algunos símbolos tipográficos de lugar; véase cuánto aguantan las presunciones hechas en esa frase al revisar el teclado francés (Francia), el checo, el lituano, el húngaro, el canadiense (multilingüe), etcétera.

Al haber caído en el facilismo de confundir las teclas físicas con las leyendas que éstas tienen en el teclado inglés, crearon innecesariamente un problema para toda la gente que usa alguna otra distribución nacional. Siguiendo el ejemplo anterior, la tecla C10 es conocida en QMK como «KC_SEMICOLON», que estará muy bien para los dos teclados ingleses, que en esa tecla tienen impreso encima el punto y coma («semicolon»), pero en los teclados usados en los demás paises tienen cualquier otra cosa.

Así, para poder poner la eñe en tu teclado, tienes que:

Nota: en QMK se han construido conjuntos de alias para algunas distribuciones de teclado nacionales con el objeto de usar las “leyendas correctas”. Así, por ejemplo, «ES_NTIL» y «DE_ODIA» apuntan ambos a «KC_SCLN», que apunta a su vez a «KC_SEMICOLON». Aunque la intención de esto era simplificar las cosas, ha tenido el efecto contrario: además de lo engorroso que es tener que saber de múltiples nombres para una tecla física, se diluye la separación entre los niveles físico y lógico que conviene mantener: cuando se lidia con un programa que funciona en el [controlador del] teclado (como el propio QMK), lo ideal es pensar sólo en las teclas físicas y desentenderse, ojalá por completo, de la distribución nacional que se usará en el computador.

Si de todas maneras quieres ver los conjuntos de alias definidos en QMK para el teclado español (España), están en https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_extras/keymap_spanish.h; los distintos conjuntos de alias para distintas distribuciones nacionales están en https://github.com/qmk/qmk_firmware/tree/master/quantum/keymap_extras (notarás, sin duda, que el teclado español (Latinoamérica) está ausente ahí).


Cómo programar el layout en el controlador del teclado.

En general, a la hora de programar las asignaciones de teclas para un teclado normal o relativamente normal, basta con usar las opciones por defecto propias de un teclado en inglés, y dejar que el sistema operativo por sí solo haga la parte que le toca, con la distribución nacional deseada.

Vista del QMK Configurator.

Sí, esto se ve raro: en pantalla, a la derecha de la ele se despliega el punto y coma y los dos puntos, el apóstrofo y las comillas, y la contrabarra y la barra vertical, mientras que al mirar hacia abajo, en el teclado español uno ve la eñe, el acento agudo y la diéresis, y la ce con cedilla [haciendo las veces de ce trencada] en las posiciones correspondientes. Recuerda que QMK está mostrando una representación gráfica de las teclas físicas, usando las leyendas propias del teclado inglés (EE.UU.). Si te cuesta tener claro qué corresponde a qué, usa el comparador interactivo de distribuciones de teclado para ver el teclado español (España) y el inglés (EE.UU.) lado a lado.

Los únicos peros a esta regla general son:

  1. La tecla D13 en un teclado ANSI se corrresponde con la tecla C12 en un teclado ISO; la primera es «KC_BACKSLASH» o «KC_BSLS» en QMK y la segunda es «KC_NONUS_HASH» o «KC_NUHS». En general, las distribuciones de teclado nacionales en los distintos sistemas operativos están conscientes de esta correspondencia y saben compensar esto. Así, si usas la distribución de teclado español en un teclado gringo (que tiene «\ |» impreso en la superficie de la tecla), deberías obtener ç sin problemas, que es lo esperable. Si eso no ocurriere, cambia «KC_NONUS_HASH» por «KC_BACKSLASH» en tu definición para el teclado.

  2. La tecla B00KC_NONUS_BACKSLASH» o «KC_NUBS» en QMK) de un teclado ISO (la que está entre B99 [que generalmente será Mayús/Shift] y B01 [que generalmente será Z]) no existe en un teclado ANSI. Si tu distribución de teclado nacional (español (Latinoamérica), iberoamericano, eslovaco, etcétera) la utiliza, carecer de la tecla física implica la inaccesibilidad de algunos caracteres (< y > en el primer ejemplo; ·, |, ~ y en el segundo; &, * y < en el tercero). Para lidiar con este problema, hay tres opciones diferentes:

    1. La mejor opción es usar una distribución nacional a nivel de sistema operativo que asigne ubicaciones alternativas a los caracteres de interés. Por ejemplo, en el teclado español (España) normal, B00 produce el caracter < y B99B00 produce el caracter >; el teclado español extendido tiene las mismas dos asignaciones, y además dispone de A08E08 y A08E09 y (i.e: AltGr‑8 y AltGr‑9) como asignaciones secundarias para los mismos caracteres.

    2. La siguiente opción es definir que alguna otra tecla física en el teclado asuma el rol de B00, de modo que se envíe el mismo scan code que le corresponde. Esto es exactamente lo que se hace en muchos teclados 60%: como Esc (0x01) se mueve a E00 (desde donde normalmente se emite 0x29, que el sistema operativo luego entiende que debe resultar en alguno de los caracteres º, ª y \ en el teclado español (España), o en ` y ~ en el teclado inglés (EE.UU.), etcétera), lo que se hace es dividir la tecla Backspace en dos; la mitad derecha sigue siendo Backspace y la mitad izquierda, que ahora es por sí sola la tecla ubicada en E13, produce el scan code 0x29.

    3. A falta de las dos anteriores, la opción que queda es definir macros en QMK que suplan esta carencia. Por ejemplo, que si se aprieta Fn‑D01 en vez de D01 por sí solo, se entregue el scan code 0xE2 en vez de 0x51 (de modo que con eso el sistema operativo vea que la tecla apretada fue la B00 en vez de la D01 y con eso produzca < en vez de q).


¿Qué hago si mi teclado es pequeño y no caben todas las teclas?

En teclados pequeños, se acostumbra repartir la definición de asignaciones en distintas «capas», accesibles mediante teclas dedicadas a este efecto (típicamente Fn en un teclado 60%; en teclados 40% son comunes las teclas Lower y Raise), de modo que haya alguna combinación de teclas físicas para todos y cada uno de los scan codes que se deben enviar al computador, sin que al sistema operativo le importe, o siquiera sepa, que el teclado en cuestión es una enanez.

Así, por ejemplo, podría definirse un layout interno para un teclado 40% como en este ejemplo, con una capa base y dos capas secundarias:

Diagrama de un layout para un teclado 40%.

Usando este layout de ejemplo en este teclado teórico, si se pulsa la combinación Fn1-Mayús/Shift-H, los scan codes enviados al computador serán 0x2A,0x1B (o 0x36,0x1B, si usas la tecla Mayús/Shift derecha en vez de la izquierda), y eso resultará en la obtención de...


Última actualización: 25/09/2022.

Volver a Documentos acerca de teclados.