summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2021-12-01 01:34:08 +0000
committerGitHub <noreply@github.com>2021-11-30 17:34:08 -0800
commit2726856cde66856344de7790d750a332ace1070d (patch)
tree9ec92a6e39a8dc11846b2fe333a6896fb7000268
parent3079fd0415c60a72c5c18601a6fa3d196bb9215d (diff)
Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368)
-rw-r--r--docs/keycodes.md1
-rw-r--r--docs/keycodes_magic.md1
-rw-r--r--quantum/process_keycode/process_magic.c4
-rw-r--r--quantum/quantum_keycodes.h3
4 files changed, 9 insertions, 0 deletions
diff --git a/docs/keycodes.md b/docs/keycodes.md
index ba06e1b8b6..2ea4fc74e2 100644
--- a/docs/keycodes.md
+++ b/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                                                 |
diff --git a/docs/keycodes_magic.md b/docs/keycodes_magic.md
index 7e1b1a4f62..01eb69168e 100644
--- a/docs/keycodes_magic.md
+++ b/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                                                 |
diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c
index d5cff4f12a..6332be647c 100644
--- a/quantum/process_keycode/process_magic.c
+++ b/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);
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index e4d0167aac..3950a3bcae 100644
--- a/quantum/quantum_keycodes.h
+++ b/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