diff options
| author | Ilya Zhuravlev <whatever@xyz.is> | 2021-06-29 19:43:11 -0400 |
|---|---|---|
| committer | Ilya Zhuravlev <whatever@xyz.is> | 2021-07-17 23:46:10 -0400 |
| commit | 8dc2d0728872b13576da33af010cbc5a461051cb (patch) | |
| tree | d174b7c8f5022bf819ec9172affc1732099a9270 /quantum/qmk_settings.h | |
| parent | c0cd1bfc6c6ee9fddf53ab31529e0a119c85b05f (diff) | |
qmk_settings: initial prototype
Diffstat (limited to 'quantum/qmk_settings.h')
| -rw-r--r-- | quantum/qmk_settings.h | 71 |
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 |
