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

Simple, compacto y elegante
Simple, compacto y elegante

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 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:

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

Se denominan BOX por la forma de caja de la pieza superior
Se denominan BOX por la forma de caja de la pieza superior

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é.

BOX Jades junto a mi Anne Pro con Gateron Browns
BOX Jades junto a mi Anne Pro con Gateron Browns

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.

Fallos comunes y soluciones a la hora de soldar. Fuente: https://learn.sparkfun.com/
Fallos comunes y soluciones a la hora de soldar. Fuente: https://learn.sparkfun.com/

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.

Fácil y efectivo. Falta un enganche por colocar
Fácil y efectivo. Falta un enganche por colocar

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">

Previous

Next

</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:

λ  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

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.