浏览代码

Fix to bootmagic key configurable

tmk 11 年之前
父节点
当前提交
b2c7529ec9
共有 3 个文件被更改,包括 44 次插入3 次删除
  1. 3 1
      common/bootmagic.c
  2. 39 1
      common/bootmagic.h
  3. 2 1
      common/keymap.c

+ 3 - 1
common/bootmagic.c

@@ -18,8 +18,10 @@ void bootmagic(void)
     }
 
     /* do scans in case of bounce */
+    print("boogmagic scan: ... ");
     uint8_t scan = 100;
     while (scan--) { matrix_scan(); _delay_ms(10); }
+    print("done.\n");
 
     /* bootmagic skip */
     if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SKIP)) {
@@ -53,7 +55,7 @@ void bootmagic(void)
 
     /* keymap config */
     keymap_config.raw = eeconfig_read_keymap();
-    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_CONTROL_CPASLOCK)) {
+    if (bootmagic_scan_keycode(BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK)) {
         keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;
     }
     if (bootmagic_scan_keycode(BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL)) {

+ 39 - 1
common/bootmagic.h

@@ -23,34 +23,72 @@
 #endif
 
 /* debug enable */
+#ifndef BOOTMAGIC_KEY_DEBUG_ENABLE
 #define BOOTMAGIC_KEY_DEBUG_ENABLE      KC_D
+#endif
+#ifndef BOOTMAGIC_KEY_DEBUG_MATRIX
 #define BOOTMAGIC_KEY_DEBUG_MATRIX      KC_X
+#endif
+#ifndef BOOTMAGIC_KEY_DEBUG_KEYBOARD
 #define BOOTMAGIC_KEY_DEBUG_KEYBOARD    KC_K
+#endif
+#ifndef BOOTMAGIC_KEY_DEBUG_MOUSE
 #define BOOTMAGIC_KEY_DEBUG_MOUSE       KC_M
+#endif
 
 /*
  * keymap config
  */
-#define BOOTMAGIC_KEY_SWAP_CONTROL_CPASLOCK     KC_LCTRL
+#ifndef BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK
+#define BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK     KC_LCTRL
+#endif
+#ifndef BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL
 #define BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL       KC_CAPSLOCK
+#endif
+#ifndef BOOTMAGIC_KEY_SWAP_LALT_LGUI
 #define BOOTMAGIC_KEY_SWAP_LALT_LGUI            KC_LALT
+#endif
+#ifndef BOOTMAGIC_KEY_SWAP_RALT_RGUI
 #define BOOTMAGIC_KEY_SWAP_RALT_RGUI            KC_RALT
+#endif
+#ifndef BOOTMAGIC_KEY_NO_GUI
 #define BOOTMAGIC_KEY_NO_GUI                    KC_LGUI
+#endif
+#ifndef BOOTMAGIC_KEY_SWAP_GRAVE_ESC
 #define BOOTMAGIC_KEY_SWAP_GRAVE_ESC            KC_GRAVE
+#endif
+#ifndef BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE
 #define BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE  KC_BSLASH
+#endif
 
 
 /*
  * change default layer
  */
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_0
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_0   KC_0
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_1
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_1   KC_1
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_2
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_2   KC_2
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_3
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_3   KC_3
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_4
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_4   KC_4
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_5
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_5   KC_5
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_6
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_6   KC_6
+#endif
+#ifndef BOOTMAGIC_KEY_DEFAULT_LAYER_7
 #define BOOTMAGIC_KEY_DEFAULT_LAYER_7   KC_7
+#endif
 
 
 void bootmagic(void);

+ 2 - 1
common/keymap.c

@@ -36,10 +36,11 @@ action_t action_for_key(uint8_t layer, key_t key)
             return keymap_fn_to_action(keycode);
 #ifdef BOOTMAGIC_ENABLE
         case KC_CAPSLOCK:
+        case KC_LOCKING_CAPS:
             if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
                 return keycode_to_action(KC_LCTL);
             }
-            return keycode_to_action(KC_CAPS);
+            return keycode_to_action(keycode);
         case KC_LCTL:
             if (keymap_config.swap_control_capslock) {
                 return keycode_to_action(KC_CAPSLOCK);