瀏覽代碼

Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368)

Joel Challis 3 年之前
父節點
當前提交
2726856cde
共有 4 個文件被更改,包括 9 次插入0 次删除
  1. 1 0
      docs/keycodes.md
  2. 1 0
      docs/keycodes_magic.md
  3. 4 0
      quantum/process_keycode/process_magic.c
  4. 3 0
      quantum/quantum_keycodes.h

+ 1 - 0
docs/keycodes.md

@@ -326,6 +326,7 @@ See also: [Magic Keycodes](keycodes_magic.md)
 |----------------------------------|---------|--------------------------------------------------------------------------|
 |`MAGIC_SWAP_CONTROL_CAPSLOCK`     |`CL_SWAP`|Swap Caps Lock and Left Control                                           |
 |`MAGIC_UNSWAP_CONTROL_CAPSLOCK`   |`CL_NORM`|Unswap Caps Lock and Left Control                                         |
+|`MAGIC_TOGGLE_CONTROL_CAPSLOCK`   |`CL_TOGG`|Toggle Caps Lock and Left Control swap                                    |
 |`MAGIC_CAPSLOCK_TO_CONTROL`       |`CL_CTRL`|Treat Caps Lock as Control                                                |
 |`MAGIC_UNCAPSLOCK_TO_CONTROL`     |`CL_CAPS`|Stop treating Caps Lock as Control                                        |
 |`MAGIC_SWAP_LCTL_LGUI`            |`LCG_SWP`|Swap Left Control and GUI                                                 |

+ 1 - 0
docs/keycodes_magic.md

@@ -6,6 +6,7 @@
 |----------------------------------|---------|--------------------------------------------------------------------------|
 |`MAGIC_SWAP_CONTROL_CAPSLOCK`     |`CL_SWAP`|Swap Caps Lock and Left Control                                           |
 |`MAGIC_UNSWAP_CONTROL_CAPSLOCK`   |`CL_NORM`|Unswap Caps Lock and Left Control                                         |
+|`MAGIC_TOGGLE_CONTROL_CAPSLOCK`   |`CL_TOGG`|Toggle Caps Lock and Left Control swap                                    |
 |`MAGIC_CAPSLOCK_TO_CONTROL`       |`CL_CTRL`|Treat Caps Lock as Control                                                |
 |`MAGIC_UNCAPSLOCK_TO_CONTROL`     |`CL_CAPS`|Stop treating Caps Lock as Control                                        |
 |`MAGIC_SWAP_LCTL_LGUI`            |`LCG_SWP`|Swap Left Control and GUI                                                 |

+ 4 - 0
quantum/process_keycode/process_magic.c

@@ -44,6 +44,7 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
             case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
             case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
             case MAGIC_TOGGLE_GUI:
+            case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
                 /* keymap config */
                 keymap_config.raw = eeconfig_read_keymap();
                 switch (keycode) {
@@ -168,6 +169,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
                     case MAGIC_TOGGLE_GUI:
                         keymap_config.no_gui = !keymap_config.no_gui;
                         break;
+                    case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
+                        keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;
+                        break;
                 }
 
                 eeconfig_update_keymap(keymap_config.raw);

+ 3 - 0
quantum/quantum_keycodes.h

@@ -597,6 +597,8 @@ enum quantum_keycodes {
     MACRO_30,
     MACRO_31,
 
+    MAGIC_TOGGLE_CONTROL_CAPSLOCK,
+
     // Start of custom keycode range for keyboards and keymaps - always leave at the end
     SAFE_RANGE
 };
@@ -749,6 +751,7 @@ enum quantum_keycodes {
 #define CL_NORM MAGIC_UNSWAP_CONTROL_CAPSLOCK
 #define CL_CTRL MAGIC_CAPSLOCK_TO_CONTROL
 #define CL_CAPS MAGIC_UNCAPSLOCK_TO_CONTROL
+#define CL_TOGG MAGIC_TOGGLE_CONTROL_CAPSLOCK
 
 #define LCG_SWP MAGIC_SWAP_LCTL_LGUI
 #define LCG_NRM MAGIC_UNSWAP_LCTL_LGUI