diff --git a/src/keyboard/ergodox/layout.h b/src/keyboard/ergodox/layout.h index 02c2886..7a8517e 100644 --- a/src/keyboard/ergodox/layout.h +++ b/src/keyboard/ergodox/layout.h @@ -11,6 +11,7 @@ #ifndef LAYOUT_h #define LAYOUT_h + #include #include "lib/data-types.h" #include "lib/key-functions.h" // for `kbfun_funptr_t` @@ -35,9 +36,10 @@ // default layout 'get' macros and `extern` matrix declarations // - // these are for when the matrices are stored solely in RAM. layouts - // may redefine them if they wish and use RAM, Flash, EEPROM, or any - // combination of those, as long as they maintain the same interface. + // these are for when the matrices are stored solely in Flash. layouts + // may redefine them if they wish and use RAM, EEPROM, or any + // combination of the three, as long as they maintain the same + // interface. // // - if the macro is overridden, the matrix declaration must be too, // and vice versa. @@ -53,24 +55,33 @@ // function prototypes in the layout specific '.h' #ifndef kb_layout_get - extern uint8_t \ - _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS]; + extern uint8_t PROGMEM \ + _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS]; + #define kb_layout_get(layer,row,column) \ - (_kb_layout[layer][row][column]) + ( (uint8_t) \ + pgm_read_byte(&( \ + _kb_layout[layer][row][column] )) ) #endif #ifndef kb_layout_press_get - extern kbfun_funptr_t \ + extern kbfun_funptr_t PROGMEM \ _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS]; + #define kb_layout_press_get(layer,row,column) \ - (_kb_layout_press[layer][row][column]) + ( (kbfun_funptr_t) \ + pgm_read_word(&( \ + _kb_layout_press[layer][row][column] )) ) #endif #ifndef kb_layout_release_get extern kbfun_funptr_t PROGMEM \ _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS]; + #define kb_layout_release_get(layer,row,column) \ - (_kb_layout_release[layer][row][column]) + ( (kbfun_funptr_t) \ + pgm_read_word(&( \ + _kb_layout_release[layer][row][column] )) ) #endif #endif diff --git a/src/keyboard/ergodox/layout.md b/src/keyboard/ergodox/layout.md index d48537c..732fac7 100644 --- a/src/keyboard/ergodox/layout.md +++ b/src/keyboard/ergodox/layout.md @@ -27,8 +27,9 @@ To write a new one: ## notes -* Each layer takes 420 bytes of memory, wherever it's stored. (The matrix size - is 12x7, keycodes are 1 byte each, and function pointers are 2 bytes.) +* Each full layer takes 420 bytes of memory, wherever it's stored. (The matrix + size is 12x7, keycodes are 1 byte each, and function pointers are 2 bytes + each.) ------------------------------------------------------------------------------- diff --git a/src/keyboard/ergodox/layout/qwerty.h b/src/keyboard/ergodox/layout/qwerty.h index 52099fb..dc90619 100644 --- a/src/keyboard/ergodox/layout/qwerty.h +++ b/src/keyboard/ergodox/layout/qwerty.h @@ -7,33 +7,5 @@ * ------------------------------------------------------------------------- */ -#include -#include "lib/data-types.h" -#include "lib/key-functions.h" // for `kbfun_funptr_t` - -#include "../matrix.h" // for number of rows and columns - - #define KB_LAYERS 1 // must match what's defined in the layout '.c' file - -// override the defaults so we can use program space - -extern uint8_t PROGMEM \ - _kb_layout[KB_LAYERS][KB_ROWS][KB_COLUMNS]; -#define kb_layout_get(layer,row,column) \ - ( (uint8_t) (pgm_read_byte(&( \ - _kb_layout[layer][row][column] ))) ) - -extern kbfun_funptr_t PROGMEM \ - _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS]; -#define kb_layout_press_get(layer,row,column) \ - ( (kbfun_funptr_t) (pgm_read_word(&( \ - _kb_layout_press[layer][row][column] ))) ) - -extern kbfun_funptr_t PROGMEM \ - _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS]; -#define kb_layout_release_get(layer,row,column) \ - ( (kbfun_funptr_t) (pgm_read_word(&( \ - _kb_layout_release[layer][row][column] ))) ) -