mirror of https://github.com/zmkfirmware/zmk.git
fix: Reduce RAM usage in the keymap
* When not building with runtime keymap support, make the keymap const.
This commit is contained in:
parent
32d0a4bf41
commit
a9167b2275
|
|
@ -83,7 +83,7 @@ static uint8_t keymap_layer_orders[ZMK_KEYMAP_LAYERS_LEN];
|
||||||
(DT_INST_FOREACH_CHILD_SEP(0, TRANSFORMED_LAYER, (, ))), \
|
(DT_INST_FOREACH_CHILD_SEP(0, TRANSFORMED_LAYER, (, ))), \
|
||||||
(DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(0, TRANSFORMED_LAYER, (, ))))};
|
(DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(0, TRANSFORMED_LAYER, (, ))))};
|
||||||
|
|
||||||
KEYMAP_VAR(zmk_keymap, )
|
KEYMAP_VAR(zmk_keymap, COND_CODE_1(IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE), (), (const)))
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
||||||
|
|
||||||
|
|
@ -238,8 +238,6 @@ zmk_keymap_get_layer_binding_at_idx(zmk_keymap_layer_id_t layer_id, uint8_t bind
|
||||||
|
|
||||||
static uint8_t zmk_keymap_layer_pending_changes[ZMK_KEYMAP_LAYERS_LEN][PENDING_ARRAY_SIZE];
|
static uint8_t zmk_keymap_layer_pending_changes[ZMK_KEYMAP_LAYERS_LEN][PENDING_ARRAY_SIZE];
|
||||||
|
|
||||||
#endif // IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
|
||||||
|
|
||||||
int zmk_keymap_set_layer_binding_at_idx(zmk_keymap_layer_id_t layer_id, uint8_t binding_idx,
|
int zmk_keymap_set_layer_binding_at_idx(zmk_keymap_layer_id_t layer_id, uint8_t binding_idx,
|
||||||
struct zmk_behavior_binding binding) {
|
struct zmk_behavior_binding binding) {
|
||||||
if (binding_idx >= ZMK_KEYMAP_LEN) {
|
if (binding_idx >= ZMK_KEYMAP_LEN) {
|
||||||
|
|
@ -248,11 +246,9 @@ int zmk_keymap_set_layer_binding_at_idx(zmk_keymap_layer_id_t layer_id, uint8_t
|
||||||
|
|
||||||
ASSERT_LAYER_VAL(layer_id, -EINVAL)
|
ASSERT_LAYER_VAL(layer_id, -EINVAL)
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
|
||||||
uint8_t *pending = zmk_keymap_layer_pending_changes[layer_id];
|
uint8_t *pending = zmk_keymap_layer_pending_changes[layer_id];
|
||||||
|
|
||||||
WRITE_BIT(pending[binding_idx / 8], binding_idx % 8, 1);
|
WRITE_BIT(pending[binding_idx / 8], binding_idx % 8, 1);
|
||||||
#endif // IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
|
||||||
|
|
||||||
// TODO: Need a mutex to protect access to the keymap data?
|
// TODO: Need a mutex to protect access to the keymap data?
|
||||||
memcpy(&zmk_keymap[layer_id][binding_idx], &binding, sizeof(binding));
|
memcpy(&zmk_keymap[layer_id][binding_idx], &binding, sizeof(binding));
|
||||||
|
|
@ -260,6 +256,14 @@ int zmk_keymap_set_layer_binding_at_idx(zmk_keymap_layer_id_t layer_id, uint8_t
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
int zmk_keymap_set_layer_binding_at_idx(zmk_keymap_layer_id_t layer_id, uint8_t binding_idx,
|
||||||
|
struct zmk_behavior_binding binding) {
|
||||||
|
return -ENOTSUP;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
||||||
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_LAYER_REORDERING)
|
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_LAYER_REORDERING)
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
#if IS_ENABLED(CONFIG_ZMK_KEYMAP_SETTINGS_STORAGE)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue