diff options
| -rw-r--r-- | docs/keycodes.md | 3 | ||||
| -rw-r--r-- | docs/keycodes_magic.md | 3 | ||||
| -rw-r--r-- | quantum/command.c | 2 | ||||
| -rw-r--r-- | quantum/keycode_config.c | 4 | ||||
| -rw-r--r-- | quantum/keycode_config.h | 1 | ||||
| -rw-r--r-- | quantum/process_keycode/process_magic.c | 10 | ||||
| -rw-r--r-- | quantum/quantum_keycodes.h | 8 |
7 files changed, 31 insertions, 0 deletions
diff --git a/docs/keycodes.md b/docs/keycodes.md index bd5af32dd3..37e9d00392 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md | |||
| @@ -337,6 +337,9 @@ See also: [Magic Keycodes](keycodes_magic.md) | |||
| 337 | |`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control | | 337 | |`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control | |
| 338 | |`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control | | 338 | |`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control | |
| 339 | |`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap | | 339 | |`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap | |
| 340 | |`MAGIC_SWAP_ESCAPE_CAPSLOCK` |`EC_SWAP`|Swap Caps Lock and Escape | | ||
| 341 | |`MAGIC_UNSWAP_ESCAPE_CAPSLOCK` |`EC_NORM`|Unswap Caps Lock and Escape | | ||
| 342 | |`MAGIC_TOGGLE_ESCAPE_CAPSLOCK` |`EC_TOGG`|Toggle Caps Lock and Escape swap | | ||
| 340 | |`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control | | 343 | |`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control | |
| 341 | |`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control | | 344 | |`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control | |
| 342 | |`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI | | 345 | |`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI | |
diff --git a/docs/keycodes_magic.md b/docs/keycodes_magic.md index 01eb69168e..982a301630 100644 --- a/docs/keycodes_magic.md +++ b/docs/keycodes_magic.md | |||
| @@ -7,6 +7,9 @@ | |||
| 7 | |`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control | | 7 | |`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control | |
| 8 | |`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control | | 8 | |`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control | |
| 9 | |`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap | | 9 | |`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap | |
| 10 | |`MAGIC_SWAP_ESCAPE_CAPSLOCK` |`EC_SWAP`|Swap Caps Lock and Escape | | ||
| 11 | |`MAGIC_UNSWAP_ESCAPE_CAPSLOCK` |`EC_NORM`|Unswap Caps Lock and Escape | | ||
| 12 | |`MAGIC_TOGGLE_ESCAPE_CAPSLOCK` |`EC_TOGG`|Toggle Caps Lock and Escape swap | | ||
| 10 | |`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control | | 13 | |`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control | |
| 11 | |`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control | | 14 | |`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control | |
| 12 | |`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI | | 15 | |`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI | |
diff --git a/quantum/command.c b/quantum/command.c index f90d73207c..2e94cb44b8 100644 --- a/quantum/command.c +++ b/quantum/command.c | |||
| @@ -282,6 +282,7 @@ static void print_eeconfig(void) { | |||
| 282 | ".swap_grave_esc: %u\n" | 282 | ".swap_grave_esc: %u\n" |
| 283 | ".swap_backslash_backspace: %u\n" | 283 | ".swap_backslash_backspace: %u\n" |
| 284 | ".nkro: %u\n" | 284 | ".nkro: %u\n" |
| 285 | ".swap_escape_capslock: %u\n" | ||
| 285 | 286 | ||
| 286 | , kc.raw | 287 | , kc.raw |
| 287 | , kc.swap_control_capslock | 288 | , kc.swap_control_capslock |
| @@ -294,6 +295,7 @@ static void print_eeconfig(void) { | |||
| 294 | , kc.swap_grave_esc | 295 | , kc.swap_grave_esc |
| 295 | , kc.swap_backslash_backspace | 296 | , kc.swap_backslash_backspace |
| 296 | , kc.nkro | 297 | , kc.nkro |
| 298 | , kc.swap_escape_capslock | ||
| 297 | ); /* clang-format on */ | 299 | ); /* clang-format on */ |
| 298 | 300 | ||
| 299 | # ifdef BACKLIGHT_ENABLE | 301 | # ifdef BACKLIGHT_ENABLE |
diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c index dd2a17e242..5b5cc5d28e 100644 --- a/quantum/keycode_config.c +++ b/quantum/keycode_config.c | |||
| @@ -29,6 +29,8 @@ uint16_t keycode_config(uint16_t keycode) { | |||
| 29 | case KC_LOCKING_CAPS_LOCK: | 29 | case KC_LOCKING_CAPS_LOCK: |
| 30 | if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { | 30 | if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { |
| 31 | return KC_LEFT_CTRL; | 31 | return KC_LEFT_CTRL; |
| 32 | } else if (keymap_config.swap_escape_capslock) { | ||
| 33 | return KC_ESCAPE; | ||
| 32 | } | 34 | } |
| 33 | return keycode; | 35 | return keycode; |
| 34 | case KC_LEFT_CTRL: | 36 | case KC_LEFT_CTRL: |
| @@ -96,6 +98,8 @@ uint16_t keycode_config(uint16_t keycode) { | |||
| 96 | case KC_ESCAPE: | 98 | case KC_ESCAPE: |
| 97 | if (keymap_config.swap_grave_esc) { | 99 | if (keymap_config.swap_grave_esc) { |
| 98 | return KC_GRAVE; | 100 | return KC_GRAVE; |
| 101 | } else if (keymap_config.swap_escape_capslock) { | ||
| 102 | return KC_CAPS_LOCK; | ||
| 99 | } | 103 | } |
| 100 | return KC_ESCAPE; | 104 | return KC_ESCAPE; |
| 101 | case KC_BACKSLASH: | 105 | case KC_BACKSLASH: |
diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h index a2cb025ed2..81a8e61471 100644 --- a/quantum/keycode_config.h +++ b/quantum/keycode_config.h | |||
| @@ -38,6 +38,7 @@ typedef union { | |||
| 38 | bool swap_lctl_lgui : 1; | 38 | bool swap_lctl_lgui : 1; |
| 39 | bool swap_rctl_rgui : 1; | 39 | bool swap_rctl_rgui : 1; |
| 40 | bool oneshot_enable : 1; | 40 | bool oneshot_enable : 1; |
| 41 | bool swap_escape_capslock : 1; | ||
| 41 | }; | 42 | }; |
| 42 | } keymap_config_t; | 43 | } keymap_config_t; |
| 43 | 44 | ||
diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c index 10161adda3..ae60f29bf5 100644 --- a/quantum/process_keycode/process_magic.c +++ b/quantum/process_keycode/process_magic.c | |||
| @@ -45,12 +45,16 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) { | |||
| 45 | case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT: | 45 | case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT: |
| 46 | case MAGIC_TOGGLE_GUI: | 46 | case MAGIC_TOGGLE_GUI: |
| 47 | case MAGIC_TOGGLE_CONTROL_CAPSLOCK: | 47 | case MAGIC_TOGGLE_CONTROL_CAPSLOCK: |
| 48 | case MAGIC_SWAP_ESCAPE_CAPSLOCK ... MAGIC_TOGGLE_ESCAPE_CAPSLOCK: | ||
| 48 | /* keymap config */ | 49 | /* keymap config */ |
| 49 | keymap_config.raw = eeconfig_read_keymap(); | 50 | keymap_config.raw = eeconfig_read_keymap(); |
| 50 | switch (keycode) { | 51 | switch (keycode) { |
| 51 | case MAGIC_SWAP_CONTROL_CAPSLOCK: | 52 | case MAGIC_SWAP_CONTROL_CAPSLOCK: |
| 52 | keymap_config.swap_control_capslock = true; | 53 | keymap_config.swap_control_capslock = true; |
| 53 | break; | 54 | break; |
| 55 | case MAGIC_SWAP_ESCAPE_CAPSLOCK: | ||
| 56 | keymap_config.swap_escape_capslock = true; | ||
| 57 | break; | ||
| 54 | case MAGIC_CAPSLOCK_TO_CONTROL: | 58 | case MAGIC_CAPSLOCK_TO_CONTROL: |
| 55 | keymap_config.capslock_to_control = true; | 59 | keymap_config.capslock_to_control = true; |
| 56 | break; | 60 | break; |
| @@ -94,6 +98,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) { | |||
| 94 | case MAGIC_UNSWAP_CONTROL_CAPSLOCK: | 98 | case MAGIC_UNSWAP_CONTROL_CAPSLOCK: |
| 95 | keymap_config.swap_control_capslock = false; | 99 | keymap_config.swap_control_capslock = false; |
| 96 | break; | 100 | break; |
| 101 | case MAGIC_UNSWAP_ESCAPE_CAPSLOCK: | ||
| 102 | keymap_config.swap_escape_capslock = false; | ||
| 103 | break; | ||
| 97 | case MAGIC_UNCAPSLOCK_TO_CONTROL: | 104 | case MAGIC_UNCAPSLOCK_TO_CONTROL: |
| 98 | keymap_config.capslock_to_control = false; | 105 | keymap_config.capslock_to_control = false; |
| 99 | break; | 106 | break; |
| @@ -172,6 +179,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) { | |||
| 172 | case MAGIC_TOGGLE_CONTROL_CAPSLOCK: | 179 | case MAGIC_TOGGLE_CONTROL_CAPSLOCK: |
| 173 | keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock; | 180 | keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock; |
| 174 | break; | 181 | break; |
| 182 | case MAGIC_TOGGLE_ESCAPE_CAPSLOCK: | ||
| 183 | keymap_config.swap_escape_capslock = !keymap_config.swap_escape_capslock; | ||
| 184 | break; | ||
| 175 | } | 185 | } |
| 176 | 186 | ||
| 177 | eeconfig_update_keymap(keymap_config.raw); | 187 | eeconfig_update_keymap(keymap_config.raw); |
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 869826ce19..456fad6f1b 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h | |||
| @@ -605,6 +605,10 @@ enum quantum_keycodes { | |||
| 605 | 605 | ||
| 606 | CAPS_WORD, | 606 | CAPS_WORD, |
| 607 | 607 | ||
| 608 | MAGIC_SWAP_ESCAPE_CAPSLOCK, | ||
| 609 | MAGIC_UNSWAP_ESCAPE_CAPSLOCK, | ||
| 610 | MAGIC_TOGGLE_ESCAPE_CAPSLOCK, | ||
| 611 | |||
| 608 | // Start of custom keycode range for keyboards and keymaps - always leave at the end | 612 | // Start of custom keycode range for keyboards and keymaps - always leave at the end |
| 609 | SAFE_RANGE | 613 | SAFE_RANGE |
| 610 | }; | 614 | }; |
| @@ -756,6 +760,10 @@ enum quantum_keycodes { | |||
| 756 | #define CL_CAPS MAGIC_UNCAPSLOCK_TO_CONTROL | 760 | #define CL_CAPS MAGIC_UNCAPSLOCK_TO_CONTROL |
| 757 | #define CL_TOGG MAGIC_TOGGLE_CONTROL_CAPSLOCK | 761 | #define CL_TOGG MAGIC_TOGGLE_CONTROL_CAPSLOCK |
| 758 | 762 | ||
| 763 | #define EC_SWAP MAGIC_SWAP_ESCAPE_CAPSLOCK | ||
| 764 | #define EC_NORM MAGIC_UNSWAP_ESCAPE_CAPSLOCK | ||
| 765 | #define EC_TOGG MAGIC_TOGGLE_ESCAPE_CAPSLOCK | ||
| 766 | |||
| 759 | #define LCG_SWP MAGIC_SWAP_LCTL_LGUI | 767 | #define LCG_SWP MAGIC_SWAP_LCTL_LGUI |
| 760 | #define LCG_NRM MAGIC_UNSWAP_LCTL_LGUI | 768 | #define LCG_NRM MAGIC_UNSWAP_LCTL_LGUI |
| 761 | #define RCG_SWP MAGIC_SWAP_RCTL_RGUI | 769 | #define RCG_SWP MAGIC_SWAP_RCTL_RGUI |
