Jadefox, un teclado mecánico casero 68% con firmware de QMK

Un momento, ¿un teclado casero?
Si no conoces mucho sobre este mundo, te estarás preguntando… ¿Te has hecho un teclado tú solo? ¿Para qué? Si el mío barato hace lo mismo. Efectivamente, tienes razón. A fin de cuentas, estás mandando un código al ordenador que interpretará como un caracter. De la misma forma que un reloj de 5 euros da la hora de la misma forma que un reloj de 200.
La analogía es muy similar. Personalmente, paso muchas horas escribiendo en el ordenador. Quizás 6. U 8. Todos los días. Puede que menos. Como fanático, me encanta tener hardware de calidad y con el que me sienta a gusto. Es un santuario. Y, para comprarme un teclado gAmInG en el que cobran 150€ por un trozo de plástico e iluminación RGB, lo hago yo mismo con los materiales que quiera.
… Solo depende de cómo quieras mirar un teclado: si como un aparato para aporrear o como una interfaz humano - ordenador. Yo lo veo como lo segundo. Y quiero llevarlo hasta sus límites.
Antes de empezar, distingamos entre dos tipos de teclados: de membrana y mecánico
- En un teclado de membrana, bajo cada tecla se encuentra una uniforme membrana de silicona que se extiende por todo el teclado. 20 céntimos como mucho. Cada vez que pulsas una tecla, esta membrana cede y manda un pulso a través de la placa.
- En los mecánicos, esta membrana se sustituye por un interruptor (o switch en inglés). Esto es lo que le da su encanto. Este mecanismo es personalizable. Desde la distancia de viajado al pulsar la tecla, hasta el sonido. Si queréis una prueba de cómo se puede escuchar un teclado mecánico, aquí tenéis uno de mis vídeos favoritos:
En cuanto a funcionamiento, ambos tipos son, en efectos prácticos, idénticos. La diferencia reside en la personalización y la sensación. Especialmente, en los teclados caseros o DIY (Do It Yourself). Se puede elegir entre una amplia variedad de switches. No obstante, los más famosos suelen ser Cherry. Aunque pienso que las otras alternativas son mejores.
Preparativos
Materiales
Nos harán falta lo siguiente:
- PCB. La placa que conecta todo. Determina firmware, conector, layout y otras características.
- Caja para el teclado.
- Estabilizadores. Permite que las teclas largas como la barra espaciadora, shifts y similares tengan una presión uniforme por toda la superficie.
- Chapa de metal. Algunos switches van montados en esta placa. Se coloca entre PCB y caja.
- Switches. No entraremos en detalles, ya que existen otras páginas que lo explican bien. Existen tres tipos principales:
- Lineales.
- Táctiles.
- Clickies.
- Keycaps: las teclitas que permanecen a la vista.
- Opcionalmente, podemos usar LEDs. Vivan los brillibrillis.
Esta es mi lista de componentes. Hablaremos de cada componente conforme los vayamos usando:
Componente | Link | Precio |
---|---|---|
PCB + estabilizadores Costar + metal plate | Aliexpress | 68€ |
Blank Keycaps, Cherry profile | Aliexpress | 24€ |
Kailh BOX Jades x70 | Aliexpress | 31€ |
Total | 123€ |
Añadí también unos LEDs de 3mm, pero resultaron ser incompatibles con los switches BOX. Ups. Solo fueron 3€ afortunadamente. Si quieres construir este mismo teclado pero con LEDs, deberás comprar SMD LEDs.
Recursos
Aparte de todo lo anterior, necesitaremos soldador, estaño, destornilladores y un poco de grasa dieléctrica. En mi caso, no tenía todos los materiales, así que tuve que comprar algunos. Durante el proceso, también necesité un destornillador magnetizado para poner los tornillos a la caja.
Mientras esperaba a que llegaran todos los componentes, hice una lista con recursos útiles. Me resultó especialmente buena la guía de Juju. Es amena e informativa. Recomiendo echarle un vistazo.<div class="list-group my-3">Listado de recursosGuía general por Juju Lubricar y montar estabilizadores Costar Keyboard tester Documentación de QMK
</div>
Manos a la obra
Switches, chapa de metal y PCB
Una vez tenemos nuestro banco de trabajo listo con todos los materiales a mano, podemos empezar el proceso.
Empezaremos por montar los switches. Los que yo he elegido son unos Kailh BOX Jades. Es un análogo a los típicos cherry blues. Sin embargo, el mecanismo que usan los blues es sustituido por una vara de metal varilla de metal que se activa cerca de la mitad del recorrido. Esto produce una tactilidad muy alta y un sonido más grave. Además, requieren un poquito más de fuerza que un blue. De hecho, este switch, junto a los BOX Navy, tienen un mote: T H I C C C L I C K S

Específicamente, la actuación es de 50g, y el bottom out de 60g. La distancia de viajado es de 3.6mm.
Mi forma de instalar los switches ha sido diferente a lo que recomienda el vídeo que aparece en la tabla de recursos. Primero, puse todos los switches en la chapa de metal. Colocarlos requiso una fuerza que no me esperaba. Hasta me dolía el pulgar cuando terminé.

Como ya he mencionado, planifiqué mal la parte de los LEDs. Esperaba que unos de 3mm cogieran. Para mi disgusto, me di cuenta de que chocaban con la vara de metal de los BOXes. Oh well.
Una vez comprobé que todos estaban correctamente insertados, dejé caer el PCB en la placa con cuidado de no doblar los pines. Cuando todos asoman por los pads del PCB, significará que está bien preparado. Si algún pin se dobla en el proceso, lo más recomendable es sustituirlo por otro switch.
Hablando del PCB: este usa un firmware de QMK. Más adelante hablaremos de él. Además, tiene soporte para LEDs. Lo único relativamente malo que puedo destacar es el tipo de conector: Mini USB. Es una entrada que se suele usar poco hoy en día. Tuve que buscar un cable por mi casa. Al final, usé el de una cámara de fotos vieja.
Hora de soldar
Sin duda, lo que más respeto me producía. Nunca he soldado. Pero, para mi grata sorpresa, fue de lo más fácil. Siguiendo unas poquitas instrucciones, y con paciencia, se saca sin problemas. En todo momento tuve esta guía a mano por si hubiera habido problemas, pero ni la necesité. Sin embargo, la estudié un poco antes de empezar.

Una vez estén todas las soldaduras listas (Unas 136), es recomendable comprobar que cada tecla funciona. Para ello, busca una web que permita visualizar las pulsaciones del teclado y pruébalo.
Estabilizadores
Sin lugar a dudas, la parte más tediosa de todo el proceso.
Los estabilizadores que incluye el kit son del tipo Costar. Utilizan una vara metálica para evitar que la tecla se doble si la pulsamos por los laterales. Nos hacen falta 4: LShift, barra espaciadora, Enter y Backspace. Hay que tener mucha paciencia a la hora de instalarlos. Son piezas pequeñas, y además, hay que lubricarlas. En los recursos hay una pequeñita guía sobre cómo hacerlo.
Mi recomendación a la hora de poner las teclas sobre ellos, es la siguiente: Coloca los enganches de plástico en los agujeros correspondientes al keycap. La parte más larga debe estar apuntando hacia arriba. Una vez estén ambos colocados, levanta la varita que se encuentra ya instalada en el teclado. Inserta un enganche, y desplaza el keycap hacia el lateral. Para la parte que queda suelta, aplica fuerza hasta que consigas encajar la pieza restante en la varita. De este modo, ambos enganches quedarán colocados en la vara. Solo nos falta poner el keycap en el switch. Cuidado al bajar la tecla de que no se salgan.
Moddeando los estabilizadores
En mi caso, tras cierto uso, los enganches acababan por ceder al pulsar la tecla, por lo que se volvía inútil el estabilizador. Una solución era pegarlos al keycap, pero esto tiene sus claras desventajas. Como el problema es que no quedaba bien encajado, se me ocurrió lo siguiente: colocar una pieza de papel a la hora de insertarlo.

De esta forma, no se salen del keycap cuando se escribe. Si en el futuro ceden, consideraré usar pegamento. De momento no es el caso.
Keycaps
Como los keycaps no tienen leyenda, necesitamos una forma de identificarlos, para saber en qué fila van. El perfil Cherry tiene una inclinación, así que no nos vale cualquier tecla en cualquier fila. Debajo de cada uno se encuentra una numeración. Debemos buscar por RN, donde N es un valor entre 1 y 4 inclusivos. Esta es la numeración que siguen las filas:

Y, no, por si alguien se lo pregunta, no voy a rotularlos ni nada por el estilo. El proceso de grabar una tipografía en este tipo de plástico es complicado y requiere de maquinaria especial.
Últimos detalles
Únicamente queda insertar el teclado en la caja. El kit incluye una de aluminio, lo cual es una enorme ventaja para mi gusto. Proporciona un sonido más limpio y queda mejor estéticamente. Los tornillos resultaron problemáticos, puesto que la caja estaba bastante hundida y no podía ponerlos en sus respectivos huecos.
Finalmente, pega los pies de silicona en la parte trasera de la caja de aluminio. ¡Y listo! Nuestro nuevo teclado está completado.<div id="carouselExampleIndicators" class="carousel slide" data-ride="false">



</div>
QMK

Aunque ya tenemos un teclado completamente funcional, la diversión todavía no ha terminado. QMK es un firmware open source, que permite una gran personalización de las funciones del teclado.
El fabricante incluye un JSON para usarlo en kbfirmware. Esta página proporciona una interfaz gráfica cómoda. No obstante, su uso está desaconsejado, puesto que la versión que usa de QMK tiene cerca de 3 años de antigüedad.
El usuario noroadsleft creó una web para parsear archivos JSON de kbfirmware a QMK. Estos ficheros están actualizados y están listos para ser usados tras ciertas modificaciones.
La estructura del proyecto de QMK es la siguiente:
- Nuestra propia configuración del teclado irá en la carpeta
keyboards/
- Por seguridad, he decidido dejar del nombre del teclado en
kb
, aunque se llame YD68 - Dentro de la carpeta
kb
, se encuentra lo siguiente:
λ exa -T
├── config.h
├── info.json
├── kb.c
├── kb.h
├── keymaps
│ └── default
│ ├── config.h
│ ├── keymap.c
│ └── rules.mk
├── Makefile
└── rules.mk
Es importante destacar que el teclado YD68 que aparece en el proyecto de QMK NO es el mismo que el nuestro. Dicho YD68 está fabricado por KBDFans, mientras que el del kit es de YMDK. El cableado es distinto, y viene proporcionado por el JSON.
En mi Github tenéis todo el código correspondiente al proyecto. Sin embargo, iré detallando los contenidos de los archivos más importantes. A no ser que indique lo contrario, asumo que el parser ha proporcionado el código correcto, por lo que no es necesario comentar los archivos. Además, he omitido los comentarios.
Enlace al repositorio con todo el código fuente
rules.mk
MCU = atmega32u4
F_CPU = 16000000
ARCH = AVR8
F_USB = $(F_CPU)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MIDI_ENABLE = no # MIDI support
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
HD44780_ENABLE = no # Enable support for HD44780 based LCDs
keymaps/default/config.h
#pragma once
#define GRAVE_ESC_CTRL_OVERRIDE
#define MOUSEKEY_INTERVAL 16
#define MOUSEKEY_MAX_SPEED 3
keymaps/default/keymap.c
Quizás el archivo más importante. Aquí figura la disposición de las teclas del teclado. En la capa [0], podemos ver las teclas estándar. Pulsando cualquiera de los modificadores (Caplocks mantenido o la tecla fn) habilitamos la capa [1], donde se encuentran todas las teclas función.
#include QMK_KEYBOARD_H
#define LT1_CAP LT(1, KC_CAPS)
#define LT2_APP LT(2, KC_APP)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
LT1_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSPO, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, MO(1),
KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, LT2_APP, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_INS,
_______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, KC_PSCR, KC_HOME,
_______, KC_4, KC_5, KC_6, _______, _______, _______, _______, _______, KC_LOCK, _______, _______, _______, KC_END,
_______, _______, KC_1, KC_2, KC_3, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2,
_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
};
Funcionalidades
Como ya he citado anteriormente, QMK es un firmware potentísimo que permite mucha características únicas. He aquí una lista de las más interesantes:
Keycodes avanzados
La mayoría de teclas no tienen mucha complicación. Pulsa a
y saldrá una a
. Sin embargo, existen unas teclas especiales, los modificadores, que permiten cambiar el comportamiento estándar de las alfanuméricas. Mantén Shift
+ a
y saldrá A
.
Démosle un poco más de vidilla a los modificadores
Capslock
ha sido cambiado. Definimos dos comportamientos: pulsar y mantener.- Pulsar
Capslock
alterna entre mayúsculas y minúsculas. - Mantener la tecla pulsada cambia a la primera capa de funciones. Este setup permite más versatilidad a una tecla que de otra forma no tiene demasiada utilidad.
- Pulsar
RGUI
, la tecla que muestra un menú similar al del botón derecho, actúa de la misma forma- Pulsar lanza dicho menú.
- Mantener cambia a una capa especial que todavía está en desarrollo: la capa de LaTeX. Esta capa permite que, por ejemplo, al pulsar
RGUI
+a
aparezca\alpha
. Cómodo a la hora de escribir LaTeX.
- Space cadet está habilitado. Esto cambia el comportamiento de
LShift
yRShift
- En la capa [1], la zona de
qwe,asd,zxc
se ha asignado a789,456,123
respectivamente. Esto permite tener un numpad en un 68%.
Grave escape
Este es un teclado ANSI. En España solemos usar ISO-ES. Este último incluye ñ, un ISO grande, shift pequeño y una tecla adicional en la fila 1 de las alfanuméricas.
En ANSI, existe una tecla que permite pulsar y `~`. En un 68%, esta tecla no aparece. Para ello, usamos el ESC. En esta configuración, `Win` + `ESC` escribe
, mientras que Shift
+ ESC
resulta en ~
.
Conflicto con algunos atajos
En Windows, por ejemplo, para acceder al administrador de tareas, debemos pulsar Control
+ Shift
+ ESC
. Pero, con esta funcionalidad, no podríamos. Para ello, definimos en el archivo config.h
la variable GRAVE_ESC_CTRL_OVERRIDE
. Y listo.
Keylock
Pulsar la combinación Fn
+ L
hará que la siguiente tecla que sea pulsada se mantenga hasta que se vuelva a pulsar. Por ejemplo, si estamos jugando a Overwatch y nos matan, tendremos que volver del spawn. Si quisiéramos beber agüita para hidratarnos tras un rico earthshatter que nos hemos comido, tendríamos que soltar las manos o del teclado o del ratón. QMK al rescate
Pulsamos fn
+ L
, W
y ahora, nuestro personaje anda solo. Voilà. mano del teclado libre.
Macros
QMK permite grabar macros. Una macro es una combinación de teclas que se pulsa en orden. Por ejemplo, podremos definir una macro que escriba Qué guapo está QMK
. Esta macro se asigna a una tecla.
Ya se ha mencionado antes, pero la idea es crear una capa de macros en [2]. Esto será cómodo a la hora de escribir LaTeX. Sin embargo, aún no lo he implementado.
Mouse Keys
En la capa [1], las teclas de dirección han sido mappeadas al ratón. Pulsando fn
+ ← → ↑ ↓
permite desplazar el ratón. Las teclas adyacentes a ↑
actúan como botón izquierdo y botón derecho respectivamente. Me resulta especialmente cómodo acceder a esta característica mediante Capslock mantenido.
En el archivo config.h
, las definiciones siguientas cambian la velocidad del puntero así como la frecuencia:
#define MOUSEKEY_INTERVAL 16
#define MOUSEKEY_MAX_SPEED 3
Space cadet
Mantener LShift
funciona como siempre. Pulsarlo manda un paréntesis de apertura (
. RShift
hace lo mismo pero con el de cierre )
. Life changer. Esto es lo mejor.
El teclado es el límite
Realmente, podríamos hacer lo que nos dé la gana. Si nos diera la gana, podríamos habilitar en una función que registra los keycodes un registro de pulsaciones, de modo que al pulsar la combinación R
+ C
+K
+ Space
+ R
L
+ L
haríamos sonar una melodía especial. Con la iluminación RGB, podríamos hacer un Snake. Las posibilidades son alucinantes. Solo depende de cómo quieras mirar un teclado: si como un aparato para aporrear o como una interfaz humano - ordenador. Yo lo veo como lo segundo. Y me gusta llevarlo hasta sus límites.
Resultados y conclusiones
En papel todo queda muy bonito. A lo largo de este post hemos visto mucha teoría. Qué es cada elemento, para qué sirve, teoría del firmware… Pero, lo importante es usarlo a fin de cuentas.
He aquí una prueba de escritura:
Siempre hay una parte que no va a capturar el vídeo: la sensación que produce. No soy un buen escritor, así que intentaré describir la sensación cómo mejor pueda. En parte, cuando escribo con el Jadefox, me siento como el hombre de Toy Story 2 que repara a Woody. Escribir no produce la sensación de aporrear un teclado. Es más como un baile con zapatos de tacones metálicos. Es preciso, tiene una respuesta inmediata, hace lo que tú le dices que haga. Esto es debido sobre todo a la combinación del aluminio y la altísima tactilidad de los Jades. Si se le une a lo anterior el sonido de la barra de los switches, el efecto es impresionante. Desde luego, no podría estar más contento.