Эх сурвалжийг харах

added BS_TOGG so BS_SWAP and BS_NORM can be on a single key (#18837)

Co-authored-by: Selene ToyKeeper <git@toykeeper.net>
Selene ToyKeeper 2 жил өмнө
parent
commit
e863c431f6

+ 1 - 0
docs/keycodes.md

@@ -404,6 +404,7 @@ See also: [Magic Keycodes](keycodes_magic.md)
 |`MAGIC_UNSWAP_GRAVE_ESC`          |`GE_NORM`|Unswap <code>&#96;</code> and Escape                                      |
 |`MAGIC_SWAP_BACKSLASH_BACKSPACE`  |`BS_SWAP`|Swap `\` and Backspace                                                    |
 |`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace                                                  |
+|`MAGIC_TOGGLE_BACKSLASH_BACKSPACE`|`BS_TOGG`|Toggle `\` and Backspace swap state                                       |
 |`MAGIC_HOST_NKRO`                 |`NK_ON`  |Enable N-key rollover                                                     |
 |`MAGIC_UNHOST_NKRO`               |`NK_OFF` |Disable N-key rollover                                                    |
 |`MAGIC_TOGGLE_NKRO`               |`NK_TOGG`|Toggle N-key rollover                                                     |

+ 4 - 0
quantum/process_keycode/process_magic.c

@@ -45,6 +45,7 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
             case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
             case MAGIC_TOGGLE_GUI:
             case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
+            case MAGIC_TOGGLE_BACKSLASH_BACKSPACE:
             case MAGIC_SWAP_ESCAPE_CAPSLOCK ... MAGIC_TOGGLE_ESCAPE_CAPSLOCK:
                 /* keymap config */
                 keymap_config.raw = eeconfig_read_keymap();
@@ -163,6 +164,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
                         }
 #endif
                         break;
+                    case MAGIC_TOGGLE_BACKSLASH_BACKSPACE:
+                        keymap_config.swap_backslash_backspace = !keymap_config.swap_backslash_backspace;
+                        break;
                     case MAGIC_TOGGLE_NKRO:
                         clear_keyboard(); // clear first buffer to prevent stuck keys
                         keymap_config.nkro = !keymap_config.nkro;

+ 3 - 0
quantum/quantum_keycodes.h

@@ -615,6 +615,8 @@ enum quantum_keycodes {
     AUTOCORRECT_OFF,
     AUTOCORRECT_TOGGLE,
 
+    MAGIC_TOGGLE_BACKSLASH_BACKSPACE,
+
     // Start of custom keycode range for keyboards and keymaps - always leave at the end
     SAFE_RANGE
 };
@@ -731,6 +733,7 @@ enum quantum_keycodes {
 
 #define BS_SWAP MAGIC_SWAP_BACKSLASH_BACKSPACE
 #define BS_NORM MAGIC_UNSWAP_BACKSLASH_BACKSPACE
+#define BS_TOGG MAGIC_TOGGLE_BACKSLASH_BACKSPACE
 
 #define NK_ON MAGIC_HOST_NKRO
 #define NK_OFF MAGIC_UNHOST_NKRO