diff --git a/src/keyboard/ergodox/layout/qwerty.c b/src/keyboard/ergodox/layout/qwerty.c index c29878f..c77cdf8 100644 --- a/src/keyboard/ergodox/layout/qwerty.c +++ b/src/keyboard/ergodox/layout/qwerty.c @@ -27,6 +27,8 @@ #define f_l_dex &kbfun_layer_dec_exec #define f_2kcap &kbfun_2_keys_capslock_press_release #define f_lm_nu &kbfun_layermask_numpad_press_release +#define f_btldr &kbfun_jump_to_bootloader + uint8_t PROGMEM _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS] = { @@ -57,14 +59,14 @@ _ctrlR, _enter, // unused 0, // left hand -0, _F1, _F2, _F3, _F4, _F5, _F11, -0, _braceL_kp, _braceR_kp, _bracketL, _bracketR, 0, _esc, -0, _semicolon, _slash, _dash, 0, _colon_kp, -2, 0, 0, 0, 0, 0, 0, -0, _arrowL, _arrowU, _arrowD, _arrowR, - _bs, - _del, _ctrlL, - _end, _home, _altL, +-1, _F1, _F2, _F3, _F4, _F5, _F11, + 0, _braceL_kp, _braceR_kp, _bracketL, _bracketR, 0, _esc, + 0, _semicolon, _slash, _dash, 0, _colon_kp, + 2, 0, 0, 0, 0, 0, 0, + 0, _arrowL, _arrowU, _arrowD, _arrowR, + _bs, + _del, _ctrlL, + _end, _home, _altL, // right hand _F12, _F6, _F7, _F8, _F9, _F10, 0, 0, 0, _dash, _lt_kp, _gt_kp, _currencyUnit, 0, @@ -129,7 +131,7 @@ f_prrel,f_prrel,f_prrel ), // unused NULL, // left hand -f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, +f_btldr,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, f_lm_nu,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, NULL, @@ -200,7 +202,7 @@ f_prrel,f_prrel,f_prrel ), // unused NULL, // left hand -f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, + NULL,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, f_prrel,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, f_lm_nu,f_prrel,f_prrel,f_prrel,f_prrel,f_prrel, NULL, @@ -253,7 +255,7 @@ f_l_iex, NULL, NULL, NULL, NULL, NULL, NULL, f_l_dex, NULL, NULL, NULL, NULL, NULL, NULL, f_2kcap, NULL, NULL, NULL, NULL, NULL, NULL, f_lm_nu, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, +f_btldr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) // ---------------------------------------------------------------------------- diff --git a/src/lib/key-functions.c b/src/lib/key-functions.c index ded56a6..541c12a 100644 --- a/src/lib/key-functions.c +++ b/src/lib/key-functions.c @@ -11,6 +11,7 @@ * ------------------------------------------------------------------------- */ +#include #include "lib-other/pjrc/usb_keyboard/usb_keyboard.h" #include "lib/data-types.h" #include "lib/usb/usage-page/keyboard.h" @@ -364,7 +365,6 @@ void kbfun_2_keys_capslock_press_release( KBFUN_FUNCTION_ARGS ) { * to the overall current layer when the second is released (even if the * first is still pressed) */ -#include "usb/usage-page/keyboard.h" void kbfun_layermask_numpad_press_release( KBFUN_FUNCTION_ARGS ) { // define layer mask bool layer_mask[KB_ROWS][KB_COLUMNS] = MATRIX_LAYER( @@ -411,3 +411,34 @@ void kbfun_layermask_numpad_press_release( KBFUN_FUNCTION_ARGS ) { _layer_set_mask(*current_layer_, layer_mask, current_layers_); } + +// ---------------------------------------------------------------------------- +// public functions (device specific) +// ---------------------------------------------------------------------------- + +void kbfun_jump_to_bootloader( KBFUN_FUNCTION_ARGS ) { + + // from PJRC (slightly modified) + // +#if MAKEFILE_BOARD == teensy-2-0 + // --- for all Teensy boards + cli(); + + // disable watchdog, if enabled + // disable all peripherals + UDCON = 1; + USBCON = (1<