aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/dynamic_keymap.c
diff options
context:
space:
mode:
authorWilba <Jason.S.Williams@gmail.com>2020-01-04 07:52:00 +1100
committerDrashna Jaelre <drashna@live.com>2020-01-03 12:52:00 -0800
commit320822d75b785401809f45007320e6fb6885b3fd (patch)
treec511d49a48b953ac29ffb4a51ac928319eb9fde4 /quantum/dynamic_keymap.c
parentb36259566546eb884cc241bcfadb671051e5e75e (diff)
downloadfirmware-320822d75b785401809f45007320e6fb6885b3fd.tar.gz
firmware-320822d75b785401809f45007320e6fb6885b3fd.tar.bz2
firmware-320822d75b785401809f45007320e6fb6885b3fd.zip
VIA Configurator Refactor (#7268)
* VIA Refactor * Remove old code * review changes * review changes * Fix cannonkeys/satisfaction75/prototype:via build * Add via.h to quantum.h * Move backlight init to after backlight config load * Merge branch 'master' into via_refactor_pr * Update user's rules.mk to new way of enabling VIA * Added id_switch_matrix_state * Review changes
Diffstat (limited to 'quantum/dynamic_keymap.c')
-rw-r--r--quantum/dynamic_keymap.c55
1 files changed, 31 insertions, 24 deletions
diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c
index ca056f630..11d28592d 100644
--- a/quantum/dynamic_keymap.c
+++ b/quantum/dynamic_keymap.c
@@ -20,28 +20,37 @@
#include "progmem.h" // to read default from flash
#include "quantum.h" // for send_string()
#include "dynamic_keymap.h"
-
-#ifdef DYNAMIC_KEYMAP_ENABLE
-
-# ifndef DYNAMIC_KEYMAP_EEPROM_ADDR
-# error DYNAMIC_KEYMAP_EEPROM_ADDR not defined
-# endif
-
-# ifndef DYNAMIC_KEYMAP_LAYER_COUNT
-# error DYNAMIC_KEYMAP_LAYER_COUNT not defined
-# endif
-
-# ifndef DYNAMIC_KEYMAP_MACRO_COUNT
-# error DYNAMIC_KEYMAP_MACRO_COUNT not defined
-# endif
-
-# ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR
-# error DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR not defined
-# endif
-
-# ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE
-# error DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE not defined
-# endif
+#include "via.h" // for default VIA_EEPROM_ADDR_END
+
+#ifndef DYNAMIC_KEYMAP_LAYER_COUNT
+# define DYNAMIC_KEYMAP_LAYER_COUNT 4
+#endif
+
+#ifndef DYNAMIC_KEYMAP_MACRO_COUNT
+# define DYNAMIC_KEYMAP_MACRO_COUNT 16
+#endif
+
+// If DYNAMIC_KEYMAP_EEPROM_ADDR not explicitly defined in config.h,
+// default it start after VIA_EEPROM_CUSTOM_ADDR+VIA_EEPROM_CUSTOM_SIZE
+#ifndef DYNAMIC_KEYMAP_EEPROM_ADDR
+# ifdef VIA_EEPROM_CUSTOM_CONFIG_ADDR
+# define DYNAMIC_KEYMAP_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR+VIA_EEPROM_CUSTOM_CONFIG_SIZE)
+# else
+# error DYNAMIC_KEYMAP_EEPROM_ADDR not defined
+# endif
+#endif
+
+// Dynamic macro starts after dynamic keymaps
+#ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR
+# define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR (DYNAMIC_KEYMAP_EEPROM_ADDR+(DYNAMIC_KEYMAP_LAYER_COUNT*MATRIX_ROWS*MATRIX_COLS*2))
+#endif
+
+// Dynamic macro uses up all remaining memory
+// Assumes 1K EEPROM on ATMega32U4
+// Override for anything different
+#ifndef DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE
+# define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE (1024-DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR)
+#endif
uint8_t dynamic_keymap_get_layer_count(void) { return DYNAMIC_KEYMAP_LAYER_COUNT; }
@@ -208,5 +217,3 @@ void dynamic_keymap_macro_send(uint8_t id) {
send_string(data);
}
}
-
-#endif // DYNAMIC_KEYMAP_ENABLE