qmk_settings: add magic
This commit is contained in:
parent
ab0bff831f
commit
0f357e6a15
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
static int eeprom_settings_get(const qmk_settings_proto_t *proto, void *setting, size_t maxsz);
|
static int eeprom_settings_get(const qmk_settings_proto_t *proto, void *setting, size_t maxsz);
|
||||||
static int eeprom_settings_set(const qmk_settings_proto_t *proto, const void *setting, size_t maxsz);
|
static int eeprom_settings_set(const qmk_settings_proto_t *proto, const void *setting, size_t maxsz);
|
||||||
|
static int magic_settings_get(const qmk_settings_proto_t *proto, void *setting, size_t maxsz);
|
||||||
|
static int magic_settings_set(const qmk_settings_proto_t *proto, const void *setting, size_t maxsz);
|
||||||
|
|
||||||
qmk_settings_t QS;
|
qmk_settings_t QS;
|
||||||
|
|
||||||
@ -60,6 +62,7 @@ static const qmk_settings_proto_t protos[] PROGMEM = {
|
|||||||
DECLARE_STATIC_SETTING(18, tap_code_delay),
|
DECLARE_STATIC_SETTING(18, tap_code_delay),
|
||||||
DECLARE_STATIC_SETTING(19, tap_hold_caps_delay),
|
DECLARE_STATIC_SETTING(19, tap_hold_caps_delay),
|
||||||
DECLARE_STATIC_SETTING(20, tapping_toggle),
|
DECLARE_STATIC_SETTING(20, tapping_toggle),
|
||||||
|
DECLARE_SETTING(21, magic_settings_get, magic_settings_set),
|
||||||
};
|
};
|
||||||
|
|
||||||
static void eeprom_settings_load(void) {
|
static void eeprom_settings_load(void) {
|
||||||
@ -97,6 +100,54 @@ static int eeprom_settings_set(const qmk_settings_proto_t *proto, const void *se
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int magic_settings_get(const qmk_settings_proto_t *proto, void *setting, size_t maxsz) {
|
||||||
|
uint32_t flags;
|
||||||
|
|
||||||
|
if (maxsz < sizeof(flags))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
flags = \
|
||||||
|
(keymap_config.swap_control_capslock << 0) |
|
||||||
|
(keymap_config.capslock_to_control << 1) |
|
||||||
|
(keymap_config.swap_lalt_lgui << 2) |
|
||||||
|
(keymap_config.swap_ralt_rgui << 3) |
|
||||||
|
(keymap_config.no_gui << 4) |
|
||||||
|
(keymap_config.swap_grave_esc << 5) |
|
||||||
|
(keymap_config.swap_backslash_backspace << 6) |
|
||||||
|
(keymap_config.nkro << 7) |
|
||||||
|
(keymap_config.swap_lctl_lgui << 8) |
|
||||||
|
(keymap_config.swap_rctl_rgui << 9) |
|
||||||
|
0;
|
||||||
|
|
||||||
|
memcpy(setting, &flags, sizeof(flags));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int magic_settings_set(const qmk_settings_proto_t *proto, const void *setting, size_t maxsz) {
|
||||||
|
uint32_t flags;
|
||||||
|
|
||||||
|
if (maxsz < sizeof(flags))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memcpy(&flags, setting, sizeof(flags));
|
||||||
|
|
||||||
|
/* must call clear_keyboard for the NKRO setting to not cause stuck keys */
|
||||||
|
clear_keyboard();
|
||||||
|
keymap_config.swap_control_capslock = !!(flags & (1 << 0));
|
||||||
|
keymap_config.capslock_to_control = !!(flags & (1 << 1));
|
||||||
|
keymap_config.swap_lalt_lgui = !!(flags & (1 << 2));
|
||||||
|
keymap_config.swap_ralt_rgui = !!(flags & (1 << 3));
|
||||||
|
keymap_config.no_gui = !!(flags & (1 << 4));
|
||||||
|
keymap_config.swap_grave_esc = !!(flags & (1 << 5));
|
||||||
|
keymap_config.swap_backslash_backspace = !!(flags & (1 << 6));
|
||||||
|
keymap_config.nkro = !!(flags & (1 << 7));
|
||||||
|
keymap_config.swap_lctl_lgui = !!(flags & (1 << 8));
|
||||||
|
keymap_config.swap_rctl_rgui = !!(flags & (1 << 9));
|
||||||
|
eeconfig_update_keymap(keymap_config.raw);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void qmk_settings_init(void) {
|
void qmk_settings_init(void) {
|
||||||
eeprom_settings_load();
|
eeprom_settings_load();
|
||||||
/* execute all callbacks to initialize the settings */
|
/* execute all callbacks to initialize the settings */
|
||||||
@ -135,6 +186,12 @@ void qmk_settings_reset(void) {
|
|||||||
QS.tapping_toggle = TAPPING_TOGGLE;
|
QS.tapping_toggle = TAPPING_TOGGLE;
|
||||||
|
|
||||||
eeprom_settings_save();
|
eeprom_settings_save();
|
||||||
|
|
||||||
|
/* must call clear_keyboard for the NKRO setting to not cause stuck keys */
|
||||||
|
clear_keyboard();
|
||||||
|
keymap_config.raw = 0;
|
||||||
|
eeconfig_update_keymap(keymap_config.raw);
|
||||||
|
|
||||||
/* to trigger all callbacks */
|
/* to trigger all callbacks */
|
||||||
qmk_settings_init();
|
qmk_settings_init();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user