aboutsummaryrefslogtreecommitdiff
path: root/quantum/process_keycode
diff options
context:
space:
mode:
authorJoel Challis <[email protected]>2024-11-23 10:09:34 +0000
committerGitHub <[email protected]>2024-11-23 10:09:34 +0000
commit4a5bae51cd1f2cbca0ab8c8ae6e15262f8dc5a68 (patch)
tree6dedf92beaa32ddd33476aec43c856f6a37901ed /quantum/process_keycode
parent9e9b4acbde48acbe51fb9ff198be5dce49608ee9 (diff)
downloadqmk_firmware-4a5bae51cd1f2cbca0ab8c8ae6e15262f8dc5a68.tar.gz
qmk_firmware-4a5bae51cd1f2cbca0ab8c8ae6e15262f8dc5a68.zip
[Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#24630)
* [Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#21881) * Apply suggestions from code review Co-authored-by: Nick Brassel <[email protected]> --------- Co-authored-by: Nebuleon <[email protected]> Co-authored-by: Nick Brassel <[email protected]>
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r--quantum/process_keycode/process_autocorrect.c1
-rw-r--r--quantum/process_keycode/process_default_layer.c32
-rw-r--r--quantum/process_keycode/process_default_layer.h27
3 files changed, 60 insertions, 0 deletions
diff --git a/quantum/process_keycode/process_autocorrect.c b/quantum/process_keycode/process_autocorrect.c
index edc47718f3..b7f9132acf 100644
--- a/quantum/process_keycode/process_autocorrect.c
+++ b/quantum/process_keycode/process_autocorrect.c
@@ -98,6 +98,7 @@ bool process_autocorrect_default_handler(uint16_t *keycode, keyrecord_t *record,
case QK_TO ... QK_TO_MAX:
case QK_MOMENTARY ... QK_MOMENTARY_MAX:
case QK_DEF_LAYER ... QK_DEF_LAYER_MAX:
+ case QK_PERSISTENT_DEF_LAYER ... QK_PERSISTENT_DEF_LAYER_MAX:
case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:
case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:
case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
diff --git a/quantum/process_keycode/process_default_layer.c b/quantum/process_keycode/process_default_layer.c
new file mode 100644
index 0000000000..4bca30c410
--- /dev/null
+++ b/quantum/process_keycode/process_default_layer.c
@@ -0,0 +1,32 @@
+/* Copyright 2023 Nebuleon
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "process_default_layer.h"
+#include "quantum.h"
+#include "quantum_keycodes.h"
+
+#if !defined(NO_ACTION_LAYER)
+
+bool process_default_layer(uint16_t keycode, keyrecord_t *record) {
+ if (IS_QK_PERSISTENT_DEF_LAYER(keycode) && !record->event.pressed) {
+ uint8_t layer = QK_PERSISTENT_DEF_LAYER_GET_LAYER(keycode);
+ set_single_persistent_default_layer(layer);
+ return false;
+ }
+
+ return true;
+}
+
+#endif // !defined(NO_ACTION_LAYER)
diff --git a/quantum/process_keycode/process_default_layer.h b/quantum/process_keycode/process_default_layer.h
new file mode 100644
index 0000000000..246d995817
--- /dev/null
+++ b/quantum/process_keycode/process_default_layer.h
@@ -0,0 +1,27 @@
+/* Copyright 2023 Nebuleon
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "action.h"
+
+#if !defined(NO_ACTION_LAYER)
+
+bool process_default_layer(uint16_t keycode, keyrecord_t *record);
+
+#endif // !defined(NO_ACTION_LAYER)