feat: default layer setter
This commit is contained in:
parent
931a36ff4a
commit
4e6d593a87
2 changed files with 24 additions and 0 deletions
|
@ -15,6 +15,7 @@
|
|||
typedef uint32_t zmk_keymap_layers_state_t;
|
||||
|
||||
uint8_t zmk_keymap_layer_default(void);
|
||||
int zmk_keymap_layer_set_default(uint8_t layer);
|
||||
zmk_keymap_layers_state_t zmk_keymap_layer_state(void);
|
||||
bool zmk_keymap_layer_active(uint8_t layer);
|
||||
uint8_t zmk_keymap_highest_layer_active(void);
|
||||
|
|
|
@ -108,6 +108,29 @@ static inline int set_layer_state(uint8_t layer, bool state) {
|
|||
|
||||
uint8_t zmk_keymap_layer_default(void) { return _zmk_keymap_layer_default; }
|
||||
|
||||
int zmk_keymap_layer_set_default(uint8_t layer) {
|
||||
int ret = 0;
|
||||
uint8_t prev_default = _zmk_keymap_layer_default;
|
||||
|
||||
ret = set_layer_state(layer, true);
|
||||
if (ret < 0) {
|
||||
LOG_WRN("Could not turn on the new default layer, bailing out.");
|
||||
return ret;
|
||||
}
|
||||
|
||||
_zmk_keymap_layer_default = layer;
|
||||
ret = set_layer_state(prev_default, false);
|
||||
if (ret < 0) {
|
||||
LOG_WRN("Could not disable current default layer, undoing changes.");
|
||||
_zmk_keymap_layer_default = prev_default;
|
||||
set_layer_state(layer, false);
|
||||
return ret;
|
||||
}
|
||||
|
||||
LOG_DBG("default_layer_changed: %d", layer);
|
||||
return 0;
|
||||
}
|
||||
|
||||
zmk_keymap_layers_state_t zmk_keymap_layer_state(void) { return _zmk_keymap_layer_state; }
|
||||
|
||||
bool zmk_keymap_layer_active_with_state(uint8_t layer, zmk_keymap_layers_state_t state_to_test) {
|
||||
|
|
Loading…
Add table
Reference in a new issue