aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/action_layer.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/common/action_layer.c')
-rw-r--r--tmk_core/common/action_layer.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index 47cad996a..be28107b6 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -13,14 +13,14 @@
13 13
14/** \brief Default Layer State 14/** \brief Default Layer State
15 */ 15 */
16uint32_t default_layer_state = 0; 16layer_state_t default_layer_state = 0;
17 17
18/** \brief Default Layer State Set At user Level 18/** \brief Default Layer State Set At user Level
19 * 19 *
20 * Run user code on default layer state change 20 * Run user code on default layer state change
21 */ 21 */
22__attribute__((weak)) 22__attribute__((weak))
23uint32_t default_layer_state_set_user(uint32_t state) { 23layer_state_t default_layer_state_set_user(layer_state_t state) {
24 return state; 24 return state;
25} 25}
26 26
@@ -29,7 +29,7 @@ uint32_t default_layer_state_set_user(uint32_t state) {
29 * Run keyboard code on default layer state change 29 * Run keyboard code on default layer state change
30 */ 30 */
31__attribute__((weak)) 31__attribute__((weak))
32uint32_t default_layer_state_set_kb(uint32_t state) { 32layer_state_t default_layer_state_set_kb(layer_state_t state) {
33 return default_layer_state_set_user(state); 33 return default_layer_state_set_user(state);
34} 34}
35 35
@@ -37,7 +37,7 @@ uint32_t default_layer_state_set_kb(uint32_t state) {
37 * 37 *
38 * Static function to set the default layer state, prints debug info and clears keys 38 * Static function to set the default layer state, prints debug info and clears keys
39 */ 39 */
40static void default_layer_state_set(uint32_t state) { 40static void default_layer_state_set(layer_state_t state) {
41 state = default_layer_state_set_kb(state); 41 state = default_layer_state_set_kb(state);
42 debug("default_layer_state: "); 42 debug("default_layer_state: ");
43 default_layer_debug(); debug(" to "); 43 default_layer_debug(); debug(" to ");
@@ -62,7 +62,7 @@ void default_layer_debug(void) {
62 * 62 *
63 * Sets the default layer state. 63 * Sets the default layer state.
64 */ 64 */
65void default_layer_set(uint32_t state) { 65void default_layer_set(layer_state_t state) {
66 default_layer_state_set(state); 66 default_layer_state_set(state);
67} 67}
68 68
@@ -71,21 +71,21 @@ void default_layer_set(uint32_t state) {
71 * 71 *
72 * Turns on the default layer based on matching bits between specifed layer and existing layer state 72 * Turns on the default layer based on matching bits between specifed layer and existing layer state
73 */ 73 */
74void default_layer_or(uint32_t state) { 74void default_layer_or(layer_state_t state) {
75 default_layer_state_set(default_layer_state | state); 75 default_layer_state_set(default_layer_state | state);
76} 76}
77/** \brief Default Layer And 77/** \brief Default Layer And
78 * 78 *
79 * Turns on default layer based on matching enabled bits between specifed layer and existing layer state 79 * Turns on default layer based on matching enabled bits between specifed layer and existing layer state
80 */ 80 */
81void default_layer_and(uint32_t state) { 81void default_layer_and(layer_state_t state) {
82 default_layer_state_set(default_layer_state & state); 82 default_layer_state_set(default_layer_state & state);
83} 83}
84/** \brief Default Layer Xor 84/** \brief Default Layer Xor
85 * 85 *
86 * Turns on default layer based on non-matching bits between specifed layer and existing layer state 86 * Turns on default layer based on non-matching bits between specifed layer and existing layer state
87 */ 87 */
88void default_layer_xor(uint32_t state) { 88void default_layer_xor(layer_state_t state) {
89 default_layer_state_set(default_layer_state ^ state); 89 default_layer_state_set(default_layer_state ^ state);
90} 90}
91#endif 91#endif
@@ -94,14 +94,14 @@ void default_layer_xor(uint32_t state) {
94#ifndef NO_ACTION_LAYER 94#ifndef NO_ACTION_LAYER
95/** \brief Keymap Layer State 95/** \brief Keymap Layer State
96 */ 96 */
97uint32_t layer_state = 0; 97layer_state_t layer_state = 0;
98 98
99/** \brief Layer state set user 99/** \brief Layer state set user
100 * 100 *
101 * Runs user code on layer state change 101 * Runs user code on layer state change
102 */ 102 */
103__attribute__((weak)) 103__attribute__((weak))
104uint32_t layer_state_set_user(uint32_t state) { 104layer_state_t layer_state_set_user(layer_state_t state) {
105 return state; 105 return state;
106} 106}
107 107
@@ -110,7 +110,7 @@ uint32_t layer_state_set_user(uint32_t state) {
110 * Runs keyboard code on layer state change 110 * Runs keyboard code on layer state change
111 */ 111 */
112__attribute__((weak)) 112__attribute__((weak))
113uint32_t layer_state_set_kb(uint32_t state) { 113layer_state_t layer_state_set_kb(layer_state_t state) {
114 return layer_state_set_user(state); 114 return layer_state_set_user(state);
115} 115}
116 116
@@ -118,7 +118,7 @@ uint32_t layer_state_set_kb(uint32_t state) {
118 * 118 *
119 * Sets the layer to match the specifed state (a bitmask) 119 * Sets the layer to match the specifed state (a bitmask)
120 */ 120 */
121void layer_state_set(uint32_t state) { 121void layer_state_set(layer_state_t state) {
122 state = layer_state_set_kb(state); 122 state = layer_state_set_kb(state);
123 dprint("layer_state: "); 123 dprint("layer_state: ");
124 layer_debug(); dprint(" to "); 124 layer_debug(); dprint(" to ");
@@ -151,7 +151,7 @@ bool layer_state_is(uint8_t layer) {
151 * 151 *
152 * Used for comparing layers {mostly used for unit testing} 152 * Used for comparing layers {mostly used for unit testing}
153 */ 153 */
154bool layer_state_cmp(uint32_t cmp_layer_state, uint8_t layer) { 154bool layer_state_cmp(layer_state_t cmp_layer_state, uint8_t layer) {
155 if (!cmp_layer_state) { return layer == 0; } 155 if (!cmp_layer_state) { return layer == 0; }
156 return (cmp_layer_state & (1UL<<layer)) != 0; 156 return (cmp_layer_state & (1UL<<layer)) != 0;
157} 157}
@@ -192,21 +192,21 @@ void layer_invert(uint8_t layer) {
192 * 192 *
193 * Turns on layers based on matching bits between specifed layer and existing layer state 193 * Turns on layers based on matching bits between specifed layer and existing layer state
194 */ 194 */
195void layer_or(uint32_t state) { 195void layer_or(layer_state_t state) {
196 layer_state_set(layer_state | state); 196 layer_state_set(layer_state | state);
197} 197}
198/** \brief Layer and 198/** \brief Layer and
199 * 199 *
200 * Turns on layers based on matching enabled bits between specifed layer and existing layer state 200 * Turns on layers based on matching enabled bits between specifed layer and existing layer state
201 */ 201 */
202void layer_and(uint32_t state) { 202void layer_and(layer_state_t state) {
203 layer_state_set(layer_state & state); 203 layer_state_set(layer_state & state);
204} 204}
205/** \brief Layer xor 205/** \brief Layer xor
206 * 206 *
207 * Turns on layers based on non-matching bits between specifed layer and existing layer state 207 * Turns on layers based on non-matching bits between specifed layer and existing layer state
208 */ 208 */
209void layer_xor(uint32_t state) { 209void layer_xor(layer_state_t state) {
210 layer_state_set(layer_state ^ state); 210 layer_state_set(layer_state ^ state);
211} 211}
212 212
@@ -301,9 +301,9 @@ uint8_t layer_switch_get_layer(keypos_t key) {
301 action_t action; 301 action_t action;
302 action.code = ACTION_TRANSPARENT; 302 action.code = ACTION_TRANSPARENT;
303 303
304 uint32_t layers = layer_state | default_layer_state; 304 layer_state_t layers = layer_state | default_layer_state;
305 /* check top layer first */ 305 /* check top layer first */
306 for (int8_t i = 31; i >= 0; i--) { 306 for (int8_t i = sizeof(layer_state_t)-1; i >= 0; i--) {
307 if (layers & (1UL << i)) { 307 if (layers & (1UL << i)) {
308 action = action_for_key(i, key); 308 action = action_for_key(i, key);
309 if (action.code != ACTION_TRANSPARENT) { 309 if (action.code != ACTION_TRANSPARENT) {