summaryrefslogtreecommitdiff
path: root/quantum/qmk_settings.h
diff options
context:
space:
mode:
authorIlya Zhuravlev <whatever@xyz.is>2021-06-29 19:43:11 -0400
committerIlya Zhuravlev <whatever@xyz.is>2021-07-17 23:46:10 -0400
commit8dc2d0728872b13576da33af010cbc5a461051cb (patch)
treed174b7c8f5022bf819ec9172affc1732099a9270 /quantum/qmk_settings.h
parentc0cd1bfc6c6ee9fddf53ab31529e0a119c85b05f (diff)
qmk_settings: initial prototype
Diffstat (limited to 'quantum/qmk_settings.h')
-rw-r--r--quantum/qmk_settings.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/quantum/qmk_settings.h b/quantum/qmk_settings.h
new file mode 100644
index 0000000000..e117a3b856
--- /dev/null
+++ b/quantum/qmk_settings.h
@@ -0,0 +1,71 @@
+#pragma once
+
+#include <inttypes.h>
+#include <stddef.h>
+
+/* take qmk config macros and set up helper variables for default settings */
+
+/* ========================================================================== */
+/* Grave escape */
+/* ========================================================================== */
+#ifdef GRAVE_ESC_ALT_OVERRIDE
+#define GRAVE_ESC_ALT_OVERRIDE_Defined 1
+#else
+#define GRAVE_ESC_ALT_OVERRIDE_Defined 0
+#endif
+
+#ifdef GRAVE_ESC_CTRL_OVERRIDE
+#define GRAVE_ESC_CTRL_OVERRIDE_Defined 1
+#else
+#define GRAVE_ESC_CTRL_OVERRIDE_Defined 0
+#endif
+
+#ifdef GRAVE_ESC_GUI_OVERRIDE
+#define GRAVE_ESC_GUI_OVERRIDE_Defined 1
+#else
+#define GRAVE_ESC_GUI_OVERRIDE_Defined 0
+#endif
+
+#ifdef GRAVE_ESC_SHIFT_OVERRIDE
+#define GRAVE_ESC_SHIFT_OVERRIDE_Defined 1
+#else
+#define GRAVE_ESC_SHIFT_OVERRIDE_Defined 0
+#endif
+
+#ifdef QMK_SETTINGS
+/* dynamic settings framework is enabled */
+
+/* actual settings - stored in RAM and backed by EEPROM */
+typedef struct {
+ uint8_t grave_esc_override;
+} qmk_settings_t;
+
+/* setting prototype - describes how to get/set settings, stored in flash */
+typedef struct {
+ uint16_t qsid;
+ uint16_t sz;
+ void *ptr;
+} qmk_settings_proto_t;
+
+int qmk_settings_get(uint16_t qsid, void *setting, size_t maxsz);
+int qmk_settings_set(uint16_t qsid, const void *setting, size_t maxsz);
+
+extern qmk_settings_t QS;
+
+/* Grave escape */
+#define QS_grave_esc_alt_override (QS.grave_esc_override & 1)
+#define QS_grave_esc_ctrl_override (QS.grave_esc_override & 2)
+#define QS_grave_esc_gui_override (QS.grave_esc_override & 4)
+#define QS_grave_esc_shift_override (QS.grave_esc_override & 8)
+
+#else
+/* dynamic settings framework is disabled => hardcode the settings and let the compiler optimize extra branches out */
+
+
+/* Grave escape */
+#define QS_grave_esc_alt_override GRAVE_ESC_ALT_OVERRIDE_Defined
+#define QS_grave_esc_ctrl_override GRAVE_ESC_CTRL_OVERRIDE_Defined
+#define QS_grave_esc_gui_override GRAVE_ESC_GUI_OVERRIDE_Defined
+#define QS_grave_esc_shift_override GRAVE_ESC_SHIFT_OVERRIDE_Defined
+
+#endif \ No newline at end of file