Explorar o código

Add default layer config to bootmagic

tmk %!s(int64=12) %!d(string=hai) anos
pai
achega
9de9d71952
Modificáronse 8 ficheiros con 40 adicións e 9 borrados
  1. 9 0
      README.md
  2. 2 2
      common/action_layer.c
  3. 1 1
      common/action_layer.h
  4. 18 0
      common/bootmagic.c
  5. 4 0
      common/bootmagic.h
  6. 2 2
      common/command.c
  7. 2 2
      common/eeconfig.c
  8. 2 2
      common/eeconfig.h

+ 9 - 0
README.md

@@ -149,6 +149,15 @@ Note that you must use keys of **Layer 0** as Magic keys. These settings are sto
 - Set Default Layer to 1(`1`)
 - Set Default Layer to 2(`2`)
 - Set Default Layer to 3(`3`)
+- Set Default Layer to 4(`4`)
+- Set Default Layer to 5(`5`)
+- Set Default Layer to 6(`6`)
+- Set Default Layer to 7(`7`)
+
+#### Caution
+Unintentional use of this feature will cause user confusion.
+
+TODO: Magic key combination to avoid unintentional press during plug in
 
 **TBD**
 

+ 2 - 2
common/action_layer.c

@@ -30,9 +30,9 @@ void default_layer_debug(void)
     dprintf("%08lX(%u)", default_layer_state, biton32(default_layer_state));
 }
 
-void default_layer_set(uint8_t layer)
+void default_layer_set(uint32_t state)
 {
-    default_layer_state_set(1UL<<layer);
+    default_layer_state_set(state);
 }
 
 #ifndef NO_ACTION_LAYER

+ 1 - 1
common/action_layer.h

@@ -27,7 +27,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 extern uint32_t default_layer_state;
 void default_layer_debug(void);
-void default_layer_set(uint8_t layer);
+void default_layer_set(uint32_t state);
 
 #ifndef NO_ACTION_LAYER
 /* bitwise operation */

+ 18 - 0
common/bootmagic.c

@@ -74,6 +74,24 @@ void bootmagic(void)
         keymap_config.swap_backslash_backspace = !keymap_config.swap_backslash_backspace;
     }
     eeconfig_write_keymap(keymap_config.raw);
+
+    /* default layer */
+    uint8_t default_layer = 0;
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_0)) { default_layer |= (1<<0); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_1)) { default_layer |= (1<<1); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_2)) { default_layer |= (1<<2); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_3)) { default_layer |= (1<<3); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_4)) { default_layer |= (1<<4); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_5)) { default_layer |= (1<<5); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_6)) { default_layer |= (1<<6); }
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_DEFAULT_LAYER_7)) { default_layer |= (1<<7); }
+    if (default_layer) {
+        eeconfig_write_default_layer(default_layer);
+        default_layer_set((uint32_t)default_layer);
+    } else {
+        default_layer = eeconfig_read_default_layer();
+        default_layer_set((uint32_t)default_layer);
+    }
 }
 
 bool bootmagic_scan_keycode(uint8_t keycode)

+ 4 - 0
common/bootmagic.h

@@ -41,6 +41,10 @@
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_1   KC_1
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_2   KC_2
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_3   KC_3
+#define BOOTMAGIC_KEY_DEFAULT_LAYER_4   KC_4
+#define BOOTMAGIC_KEY_DEFAULT_LAYER_5   KC_5
+#define BOOTMAGIC_KEY_DEFAULT_LAYER_6   KC_6
+#define BOOTMAGIC_KEY_DEFAULT_LAYER_7   KC_7
 
 
 void bootmagic(void);

+ 2 - 2
common/command.c

@@ -129,7 +129,7 @@ static void command_common_help(void)
 #ifdef BOOTMAGIC_ENABLE
 static void print_eeconfig(void)
 {
-    print("default_layer: "); print_dec(eeconfig_read_defalt_layer()); print("\n");
+    print("default_layer: "); print_dec(eeconfig_read_default_layer()); print("\n");
 
     debug_config_t dc;
     dc.raw = eeconfig_read_debug();
@@ -579,6 +579,6 @@ static void switch_default_layer(uint8_t layer)
 {
     print("switch_default_layer: "); print_dec(biton32(default_layer_state));
     print(" to "); print_dec(layer); print("\n");
-    default_layer_set(layer);
+    default_layer_set(1UL<<layer);
     clear_keyboard();
 }

+ 2 - 2
common/eeconfig.c

@@ -30,8 +30,8 @@ bool eeconfig_is_enabled(void)
 uint8_t eeconfig_read_debug(void)      { return eeprom_read_byte(EECONFIG_DEBUG); }
 void eeconfig_write_debug(uint8_t val) { eeprom_write_byte(EECONFIG_DEBUG, val); }
 
-uint8_t eeconfig_read_defalt_layer(void)      { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); }
-void eeconfig_write_defalt_layer(uint8_t val) { eeprom_write_byte(EECONFIG_DEFAULT_LAYER, val); }
+uint8_t eeconfig_read_default_layer(void)      { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); }
+void eeconfig_write_default_layer(uint8_t val) { eeprom_write_byte(EECONFIG_DEFAULT_LAYER, val); }
 
 uint8_t eeconfig_read_keymap(void)      { return eeprom_read_byte(EECONFIG_KEYMAP); }
 void eeconfig_write_keymap(uint8_t val) { eeprom_write_byte(EECONFIG_KEYMAP, val); }

+ 2 - 2
common/eeconfig.h

@@ -58,8 +58,8 @@ void eeconfig_disable(void);
 uint8_t eeconfig_read_debug(void);
 void eeconfig_write_debug(uint8_t val);
 
-uint8_t eeconfig_read_defalt_layer(void);
-void eeconfig_write_defalt_layer(uint8_t val);
+uint8_t eeconfig_read_default_layer(void);
+void eeconfig_write_default_layer(uint8_t val);
 
 uint8_t eeconfig_read_keymap(void);
 void eeconfig_write_keymap(uint8_t val);