{ Adrian.Matías Quezada }

TypescriptWebpackAngular 2+KarmaLESSE2E Testing

Configurador de teclado Ergodox

Esta herramienta fue desarrollada a partir de una necesidad. Compré un teclado ErgoDox que permite mapear todas las teclas a placer, desgraciadamente esto se hace con una lista poco intuitiva de números escritas en C. Para poder probar diferentes configuraciones desarrollé esta página web. Permite seleccionar visualmente la configuración de cada tecla y generar el código C que debía ser compilado e injectado en el hardware del teclado.

Capas de configuración podían ser añadidas para que presionando una tecla la disposición del teclado cambiara completamente.

La configuración se guarda en localStorage así sigue estando disponible tras refrescar la página.

Nota: Ya que esta fue una herramienta creada para mi propio uso, el código generado al presionar el botón GENERATE! puede ser encontrado en las Herramientas de Desarrollador del navegador (F12)

Ejemplo del código generado:

#include <stdint.h>
#include <stddef.h>
#include <avr/pgmspace.h>
#include "../../../lib/data-types/misc.h"
#include "../../../lib/usb/usage-page/keyboard--short-names.h"
#include "../../../lib/key-functions/public.h"
#include "../matrix.h"
#include "../layout.h"

// FUNCTIONS ------------------------------------------------------------------
void kbfun_layer_pop_all(void) {
  kbfun_layer_pop_1();
  kbfun_layer_pop_2();
  kbfun_layer_pop_3();
  kbfun_layer_pop_4();
  kbfun_layer_pop_5();
  kbfun_layer_pop_6();
  kbfun_layer_pop_7();
  kbfun_layer_pop_8();
  kbfun_layer_pop_9();
  kbfun_layer_pop_10();
}

// DEFINITIONS ----------------------------------------------------------------
#define  kprrel   &kbfun_press_release
#define  ktog     &kbfun_toggle
#define  ktrans   &kbfun_transparent
#define  lpush0   &kbfun_layer_pop_all
#define  lpush1   &kbfun_layer_push_1
#define  lpush2   &kbfun_layer_push_2
#define  lpush3   &kbfun_layer_push_3
#define  lpush4   &kbfun_layer_push_4
#define  lpush5   &kbfun_layer_push_5
#define  lpush6   &kbfun_layer_push_6
#define  lpush7   &kbfun_layer_push_7
#define  lpush8   &kbfun_layer_push_8
#define  lpush9   &kbfun_layer_push_9
#define  lpush10  &kbfun_layer_push_10
#define  lpop0    &kbfun_layer_pop_all
#define  lpop1    &kbfun_layer_pop_1
#define  lpop2    &kbfun_layer_pop_2
#define  lpop3    &kbfun_layer_pop_3
#define  lpop4    &kbfun_layer_pop_4
#define  lpop5    &kbfun_layer_pop_5
#define  lpop6    &kbfun_layer_pop_6
#define  lpop7    &kbfun_layer_pop_7
#define  lpop8    &kbfun_layer_pop_8
#define  lpop9    &kbfun_layer_pop_9
#define  lpop10   &kbfun_layer_pop_10
#define  dbtldr   &kbfun_jump_to_bootloader
#define  sshprre  &kbfun_shift_press_release
#define  altprre  &kbfun_alt_press_release
#define  guiprre  &kbfun_gui_press_release
#define  s2kcap   &kbfun_2_keys_capslock_press_release
#define  slpunum  &kbfun_layer_push_numpad
#define  slponum  &kbfun_layer_pop_numpad

// ----------------------------------------------------------------------------


// LAYOUT ---------------------------------------------------------------------
const uint8_t PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {

  // LAYER $index
  KB_MATRIX_LAYER(0, 41, 58, 59, 60, 61, 62, 63, 73, 20, 26, 8, 21, 23, 0, 1, 4, 22, 7, 9, 10, 225, 100, 29, 27, 6, 25, 1, 102, , , , 224, 0, 1, , , 2, 43, 41, 76, 64, 65, 66, 67, 68, 69, 0, 226, 28, 24, 12, 18, 19, , 11, 13, 14, 15, 53, , 227, 5, 17, 16, 54, 55, 225, 72, 128, 129, 127, 0, 4, 5, 3, , , 42, 44, 40),

  // LAYER $index
  KB_MATRIX_LAYER(0, ),

};
// ----------------------------------------------------------------------------

// PRESS ----------------------------------------------------------------------
const void_funptr_t PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {

  // LAYER $index
  KB_MATRIX_LAYER(NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpush0, lpush1, sshprre, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpush1, kprrel, , , , kprrel, lpush0, lpush1, , , lpush2, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpush0, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, , kprrel, kprrel, kprrel, kprrel, kprrel, , kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, NULL, lpush4, lpush5, lpush3, , , kprrel, kprrel, kprrel),

  // LAYER $index
  KB_MATRIX_LAYER(NULL, ),

};
// ----------------------------------------------------------------------------

// RELEASE --------------------------------------------------------------------
const void_funptr_t PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {

  // LAYER $index
  KB_MATRIX_LAYER(NULL, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, NULL, lpop1, sshprre, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, NULL, kprrel, , , , kprrel, lpop0, lpop1, , , lpop2, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, lpop0, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, , kprrel, kprrel, kprrel, kprrel, kprrel, , kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, NULL, lpop4, lpop5, lpop3, , , kprrel, kprrel, kprrel),

  // LAYER $index
  KB_MATRIX_LAYER(NULL, ),

};
// ----------------------------------------------------------------------------