|
@@ -21,6 +21,29 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
#include "keyboard.h"
|
|
|
#include "action.h"
|
|
|
|
|
|
+#ifdef DYNAMIC_KEYMAP_ENABLE
|
|
|
+# ifndef DYNAMIC_KEYMAP_LAYER_COUNT
|
|
|
+# define DYNAMIC_KEYMAP_LAYER_COUNT 4
|
|
|
+# endif
|
|
|
+# if DYNAMIC_KEYMAP_LAYER_COUNT <= 8
|
|
|
+# ifndef LAYER_STATE_8BIT
|
|
|
+# define LAYER_STATE_8BIT
|
|
|
+# endif
|
|
|
+# elif DYNAMIC_KEYMAP_LAYER_COUNT <= 16
|
|
|
+# ifndef LAYER_STATE_16BIT
|
|
|
+# define LAYER_STATE_16BIT
|
|
|
+# endif
|
|
|
+# else
|
|
|
+# ifndef LAYER_STATE_32BIT
|
|
|
+# define LAYER_STATE_32BIT
|
|
|
+# endif
|
|
|
+# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#if !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_32BIT)
|
|
|
+# define LAYER_STATE_32BIT
|
|
|
+#endif
|
|
|
+
|
|
|
#if defined(LAYER_STATE_8BIT)
|
|
|
typedef uint8_t layer_state_t;
|
|
|
# define MAX_LAYER_BITS 3
|
|
@@ -35,13 +58,15 @@ typedef uint16_t layer_state_t;
|
|
|
# define MAX_LAYER 16
|
|
|
# endif
|
|
|
# define get_highest_layer(state) biton16(state)
|
|
|
-#else
|
|
|
+#elif defined(LAYER_STATE_32BIT)
|
|
|
typedef uint32_t layer_state_t;
|
|
|
# define MAX_LAYER_BITS 5
|
|
|
# ifndef MAX_LAYER
|
|
|
# define MAX_LAYER 32
|
|
|
# endif
|
|
|
# define get_highest_layer(state) biton32(state)
|
|
|
+#else
|
|
|
+# error Layer Mask size not specified. HOW?!
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
@@ -92,7 +117,7 @@ layer_state_t layer_state_set_kb(layer_state_t state);
|
|
|
|
|
|
# define layer_state_set(layer)
|
|
|
# define layer_state_is(layer) (layer == 0)
|
|
|
-# define layer_state_cmp(state, layer) (state == 0 ? layer == 0 : (state & 1UL << layer) != 0)
|
|
|
+# define layer_state_cmp(state, layer) (state == 0 ? layer == 0 : (state & (layer_state_t)1 << layer) != 0)
|
|
|
|
|
|
# define layer_debug()
|
|
|
# define layer_clear()
|