]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - tmk_core/common/action_layer.c
[Keymap] Add missing tap dance action and fix RGB hues in personal keymaps (#6312)
[qmk_firmware.git] / tmk_core / common / action_layer.c
index 47cad996a3de7222a6bed605d1f8e19e0ad69136..dfcbc110ad1941ef4cea4c9223f0dc2970dbcf75 100644 (file)
 
 /** \brief Default Layer State
  */
-uint32_t default_layer_state = 0;
+layer_state_t default_layer_state = 0;
 
 /** \brief Default Layer State Set At user Level
  *
  * Run user code on default layer state change
  */
 __attribute__((weak))
-uint32_t default_layer_state_set_user(uint32_t state) {
+layer_state_t default_layer_state_set_user(layer_state_t state) {
   return state;
 }
 
@@ -29,7 +29,7 @@ uint32_t default_layer_state_set_user(uint32_t state) {
  *  Run keyboard code on default layer state change
  */
 __attribute__((weak))
-uint32_t default_layer_state_set_kb(uint32_t state) {
+layer_state_t default_layer_state_set_kb(layer_state_t state) {
   return default_layer_state_set_user(state);
 }
 
@@ -37,7 +37,7 @@ uint32_t default_layer_state_set_kb(uint32_t state) {
  *
  * Static function to set the default layer state, prints debug info and clears keys
  */
-static void default_layer_state_set(uint32_t state) {
+static void default_layer_state_set(layer_state_t state) {
   state = default_layer_state_set_kb(state);
   debug("default_layer_state: ");
   default_layer_debug(); debug(" to ");
@@ -62,7 +62,7 @@ void default_layer_debug(void) {
  *
  * Sets the default layer state.
  */
-void default_layer_set(uint32_t state) {
+void default_layer_set(layer_state_t state) {
   default_layer_state_set(state);
 }
 
@@ -71,21 +71,21 @@ void default_layer_set(uint32_t state) {
  *
  * Turns on the default layer based on matching bits between specifed layer and existing layer state
  */
-void default_layer_or(uint32_t state) {
+void default_layer_or(layer_state_t state) {
   default_layer_state_set(default_layer_state | state);
 }
 /** \brief Default Layer And
  *
  * Turns on default layer based on matching enabled bits between specifed layer and existing layer state
  */
-void default_layer_and(uint32_t state) {
+void default_layer_and(layer_state_t state) {
   default_layer_state_set(default_layer_state & state);
 }
 /** \brief Default Layer Xor
  *
  * Turns on default layer based on non-matching bits between specifed layer and existing layer state
  */
-void default_layer_xor(uint32_t state) {
+void default_layer_xor(layer_state_t state) {
   default_layer_state_set(default_layer_state ^ state);
 }
 #endif
@@ -94,14 +94,14 @@ void default_layer_xor(uint32_t state) {
 #ifndef NO_ACTION_LAYER
 /** \brief Keymap Layer State
  */
-uint32_t layer_state = 0;
+layer_state_t layer_state = 0;
 
 /** \brief Layer state set user
  *
  * Runs user code on layer state change
  */
 __attribute__((weak))
-uint32_t layer_state_set_user(uint32_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
   return state;
 }
 
@@ -110,7 +110,7 @@ uint32_t layer_state_set_user(uint32_t state) {
  * Runs keyboard code on layer state change
  */
 __attribute__((weak))
-uint32_t layer_state_set_kb(uint32_t state) {
+layer_state_t layer_state_set_kb(layer_state_t state) {
   return layer_state_set_user(state);
 }
 
@@ -118,7 +118,7 @@ uint32_t layer_state_set_kb(uint32_t state) {
  *
  * Sets the layer to match the specifed state (a bitmask)
  */
-void layer_state_set(uint32_t state) {
+void layer_state_set(layer_state_t state) {
   state = layer_state_set_kb(state);
   dprint("layer_state: ");
   layer_debug(); dprint(" to ");
@@ -151,7 +151,7 @@ bool layer_state_is(uint8_t layer) {
  *
  * Used for comparing layers {mostly used for unit testing}
  */
-bool layer_state_cmp(uint32_t cmp_layer_state, uint8_t layer) {
+bool layer_state_cmp(layer_state_t cmp_layer_state, uint8_t layer) {
   if (!cmp_layer_state) { return layer == 0; }
   return (cmp_layer_state & (1UL<<layer)) != 0;
 }
@@ -192,21 +192,21 @@ void layer_invert(uint8_t layer) {
  *
  * Turns on layers based on matching bits between specifed layer and existing layer state
  */
-void layer_or(uint32_t state) {
+void layer_or(layer_state_t state) {
   layer_state_set(layer_state | state);
 }
 /** \brief Layer and
  *
  * Turns on layers based on matching enabled bits between specifed layer and existing layer state
  */
-void layer_and(uint32_t state) {
+void layer_and(layer_state_t state) {
   layer_state_set(layer_state & state);
 }
 /** \brief Layer xor
  *
  * Turns on layers based on non-matching bits between specifed layer and existing layer state
  */
-void layer_xor(uint32_t state) {
+void layer_xor(layer_state_t state) {
   layer_state_set(layer_state ^ state);
 }
 
@@ -301,9 +301,9 @@ uint8_t layer_switch_get_layer(keypos_t key) {
   action_t action;
   action.code = ACTION_TRANSPARENT;
 
-  uint32_t layers = layer_state | default_layer_state;
+  layer_state_t layers = layer_state | default_layer_state;
   /* check top layer first */
-  for (int8_t i = 31; i >= 0; i--) {
+  for (int8_t i = sizeof(layer_state_t) * 8 - 1; i >= 0; i--) {
     if (layers & (1UL << i)) {
       action = action_for_key(i, key);
       if (action.code != ACTION_TRANSPARENT) {