aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/action_layer.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/common/action_layer.h')
-rw-r--r--tmk_core/common/action_layer.h58
1 files changed, 27 insertions, 31 deletions
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index a2734a29e..fee9b244d 100644
--- a/tmk_core/common/action_layer.h
+++ b/tmk_core/common/action_layer.h
@@ -23,27 +23,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
23 23
24#if defined(LAYER_STATE_8BIT) 24#if defined(LAYER_STATE_8BIT)
25typedef uint8_t layer_state_t; 25typedef uint8_t layer_state_t;
26#define get_highest_layer(state) biton8(state) 26# define get_highest_layer(state) biton8(state)
27#elif defined(LAYER_STATE_16BIT) 27#elif defined(LAYER_STATE_16BIT)
28typedef uint16_t layer_state_t; 28typedef uint16_t layer_state_t;
29#define get_highest_layer(state) biton16(state) 29# define get_highest_layer(state) biton16(state)
30#else 30#else
31typedef uint32_t layer_state_t; 31typedef uint32_t layer_state_t;
32#define get_highest_layer(state) biton32(state) 32# define get_highest_layer(state) biton32(state)
33#endif 33#endif
34 34
35
36/* 35/*
37 * Default Layer 36 * Default Layer
38 */ 37 */
39extern layer_state_t default_layer_state; 38extern layer_state_t default_layer_state;
40void default_layer_debug(void); 39void default_layer_debug(void);
41void default_layer_set(layer_state_t state); 40void default_layer_set(layer_state_t state);
42 41
43__attribute__((weak)) 42__attribute__((weak)) layer_state_t default_layer_state_set_kb(layer_state_t state);
44layer_state_t default_layer_state_set_kb(layer_state_t state); 43__attribute__((weak)) layer_state_t default_layer_state_set_user(layer_state_t state);
45__attribute__((weak))
46layer_state_t default_layer_state_set_user(layer_state_t state);
47 44
48#ifndef NO_ACTION_LAYER 45#ifndef NO_ACTION_LAYER
49/* bitwise operation */ 46/* bitwise operation */
@@ -51,12 +48,11 @@ void default_layer_or(layer_state_t state);
51void default_layer_and(layer_state_t state); 48void default_layer_and(layer_state_t state);
52void default_layer_xor(layer_state_t state); 49void default_layer_xor(layer_state_t state);
53#else 50#else
54#define default_layer_or(state) 51# define default_layer_or(state)
55#define default_layer_and(state) 52# define default_layer_and(state)
56#define default_layer_xor(state) 53# define default_layer_xor(state)
57#endif 54#endif
58 55
59
60/* 56/*
61 * Keymap Layer 57 * Keymap Layer
62 */ 58 */
@@ -78,21 +74,21 @@ void layer_or(layer_state_t state);
78void layer_and(layer_state_t state); 74void layer_and(layer_state_t state);
79void layer_xor(layer_state_t state); 75void layer_xor(layer_state_t state);
80#else 76#else
81#define layer_state 0 77# define layer_state 0
82 78
83#define layer_state_set(layer) 79# define layer_state_set(layer)
84#define layer_state_is(layer) (layer == 0) 80# define layer_state_is(layer) (layer == 0)
85#define layer_state_cmp(state, layer) (state == 0 ? layer == 0 : (state & 1UL << layer) != 0) 81# define layer_state_cmp(state, layer) (state == 0 ? layer == 0 : (state & 1UL << layer) != 0)
86 82
87#define layer_debug() 83# define layer_debug()
88#define layer_clear() 84# define layer_clear()
89#define layer_move(layer) 85# define layer_move(layer)
90#define layer_on(layer) 86# define layer_on(layer)
91#define layer_off(layer) 87# define layer_off(layer)
92#define layer_invert(layer) 88# define layer_invert(layer)
93#define layer_or(state) 89# define layer_or(state)
94#define layer_and(state) 90# define layer_and(state)
95#define layer_xor(state) 91# define layer_xor(state)
96#endif 92#endif
97 93
98layer_state_t layer_state_set_user(layer_state_t state); 94layer_state_t layer_state_set_user(layer_state_t state);
@@ -101,8 +97,8 @@ layer_state_t layer_state_set_kb(layer_state_t state);
101/* pressed actions cache */ 97/* pressed actions cache */
102#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE) 98#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
103/* The number of bits needed to represent the layer number: log2(32). */ 99/* The number of bits needed to represent the layer number: log2(32). */
104#define MAX_LAYER_BITS 5 100# define MAX_LAYER_BITS 5
105void update_source_layers_cache(keypos_t key, uint8_t layer); 101void update_source_layers_cache(keypos_t key, uint8_t layer);
106uint8_t read_source_layers_cache(keypos_t key); 102uint8_t read_source_layers_cache(keypos_t key);
107#endif 103#endif
108action_t store_or_get_action(bool pressed, keypos_t key); 104action_t store_or_get_action(bool pressed, keypos_t key);