aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Brait <[email protected]>2024-10-06 10:39:21 +0200
committerGitHub <[email protected]>2024-10-06 21:39:21 +1300
commit3cf94cb3083a8c7de632153bf33e569ea9f90526 (patch)
tree094b3c8ade8331524ac11d51e386ef398d7c07e7
parent208ebf54a905ce6e4e563a6811eca8c8dc8b17e1 (diff)
downloadqmk_firmware-3cf94cb3083a8c7de632153bf33e569ea9f90526.tar.gz
qmk_firmware-3cf94cb3083a8c7de632153bf33e569ea9f90526.zip
Add easier way to set default single layer (#24376)
* Add set_single_default_layer to match set_single_persistent_default_layer * Implements exactly the same behavior, except the write to EEPROM
-rw-r--r--docs/feature_layers.md1
-rw-r--r--docs/ref_functions.md4
-rw-r--r--quantum/quantum.c8
-rw-r--r--quantum/quantum.h1
4 files changed, 11 insertions, 3 deletions
diff --git a/docs/feature_layers.md b/docs/feature_layers.md
index fe9932fadb..30ab713222 100644
--- a/docs/feature_layers.md
+++ b/docs/feature_layers.md
@@ -74,6 +74,7 @@ There are a number of functions (and variables) related to how you can use or ma
| `default_layer_and(layer_mask)` | Turns on layers based on matching enabled bits between specifed layer and existing default layer state. |
| `default_layer_xor(layer_mask)` | Turns on layers based on non-matching bits between specifed layer and existing default layer state. |
| `default_layer_debug(layer_mask)` | Prints out the current bit mask and highest active default layer to debugger console. |
+| [`set_single_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer, but does _not_ write it to persistent memory (EEPROM). |
| [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer) | Sets the default layer and writes it to persistent memory (EEPROM). |
| [`update_tri_layer(x, y, z)`](ref_functions.md#update_tri_layerx-y-z) | Checks if layers `x` and `y` are both on, and sets `z` based on that (on if both on, otherwise off). |
| [`update_tri_layer_state(state, x, y, z)`](ref_functions.md#update_tri_layer_statestate-x-y-z) | Does the same as `update_tri_layer(x, y, z)`, but from `layer_state_set_*` functions. |
diff --git a/docs/ref_functions.md b/docs/ref_functions.md
index 3304981ef5..599515ebc1 100644
--- a/docs/ref_functions.md
+++ b/docs/ref_functions.md
@@ -69,7 +69,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
Do you want to set the default layer, so that it's retained even after you unplug the board? If so, this is the function for you.
-To use this, you would use `set_single_persistent_default_layer(layer)`. If you have a name defined for your layer, you can use that instead (such as _QWERTY, _DVORAK or _COLEMAK).
+To do this, you would use `set_single_persistent_default_layer(layer)`. If you have a name defined for your layer, you can use that instead (such as _QWERTY, _DVORAK or _COLEMAK).
This will set the default layer, update the persistent settings, and play a tune if you have [Audio](features/audio) enabled on your board, and the default layer sounds set.
@@ -82,6 +82,8 @@ To configure the default layer sounds, you would want to define this in your `co
}
```
+If you do not require it to be retained after you unplug the board, use `set_single_default_layer(layer)` instead.
+
::: tip
There are a large number of predefined songs in [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) that you can use.
diff --git a/quantum/quantum.c b/quantum/quantum.c
index db323e31c9..892beee1be 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -477,14 +477,18 @@ bool process_record_quantum(keyrecord_t *record) {
return process_action_kb(record);
}
-void set_single_persistent_default_layer(uint8_t default_layer) {
+void set_single_default_layer(uint8_t default_layer) {
#if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
PLAY_SONG(default_layer_songs[default_layer]);
#endif
- eeconfig_update_default_layer((layer_state_t)1 << default_layer);
default_layer_set((layer_state_t)1 << default_layer);
}
+void set_single_persistent_default_layer(uint8_t default_layer) {
+ eeconfig_update_default_layer((layer_state_t)1 << default_layer);
+ set_single_default_layer(default_layer);
+}
+
//------------------------------------------------------------------------------
// Override these functions in your keymap file to play different tunes on
// different events such as startup and bootloader jump
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 5446ab1ad7..b60d8a86bf 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -240,6 +240,7 @@ extern layer_state_t layer_state;
# include "os_detection.h"
#endif
+void set_single_default_layer(uint8_t default_layer);
void set_single_persistent_default_layer(uint8_t default_layer);
#define IS_LAYER_ON(layer) layer_state_is(layer)