aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/feature_bootmagic.md6
-rw-r--r--docs/keycodes.md58
-rw-r--r--quantum/quantum.c8
-rw-r--r--quantum/quantum_keycodes.h2
-rw-r--r--quantum/split_common/split_util.c3
-rw-r--r--tmk_core/common/bootmagic.c8
-rw-r--r--tmk_core/common/bootmagic.h6
-rw-r--r--tmk_core/common/eeconfig.c19
-rw-r--r--tmk_core/common/eeconfig.h3
9 files changed, 80 insertions, 33 deletions
diff --git a/docs/feature_bootmagic.md b/docs/feature_bootmagic.md
index fc37a3302..ed00d5129 100644
--- a/docs/feature_bootmagic.md
+++ b/docs/feature_bootmagic.md
@@ -34,6 +34,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
34|`X` |Toggle key matrix debugging | 34|`X` |Toggle key matrix debugging |
35|`K` |Toggle keyboard debugging | 35|`K` |Toggle keyboard debugging |
36|`M` |Toggle mouse debugging | 36|`M` |Toggle mouse debugging |
37|`L` |Set "Left Hand" for EE_HANDS handedness |
38|`R` |Set "Right Hand" for EE_HANDS handedness |
37|Backspace |Clear the EEPROM | 39|Backspace |Clear the EEPROM |
38|Caps Lock |Toggle treating Caps Lock as Left Control | 40|Caps Lock |Toggle treating Caps Lock as Left Control |
39|Left Control |Toggle swapping Caps Lock and Left Control | 41|Left Control |Toggle swapping Caps Lock and Left Control |
@@ -83,6 +85,8 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
83|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI | 85|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and Left GUI |
84|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI | 86|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and Right GUI |
85|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI | 87|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and Right GUI |
88|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness |
89|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness |
86 90
87## Configuration 91## Configuration
88 92
@@ -98,6 +102,8 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
98|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging | 102|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging |
99|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging | 103|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging |
100|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging | 104|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging |
105|`BOOTMAGIC_KEY_EE_HANDS_LEFT` |`KC_L` |Set "Left Hand" for EE_HANDS handedness |
106|`BOOTMAGIC_KEY_EE_HANDS_RIGHT` |`KC_R` |Set "Right Hand" for EE_HANDS handedness |
101|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock | 107|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock |
102|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control | 108|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control |
103|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) | 109|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) |
diff --git a/docs/keycodes.md b/docs/keycodes.md
index e17fef6fd..dfbab148b 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -257,35 +257,37 @@ This is a reference only. Each group of keys links to the page documenting their
257 257
258## [Bootmagic](feature_bootmagic.md) 258## [Bootmagic](feature_bootmagic.md)
259 259
260|Key |Aliases |Description | 260|Key |Aliases |Description |
261|----------------------------------|---------|------------------------------------| 261|----------------------------------|---------|-------------------------------------------|
262|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control | 262|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
263|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control | 263|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
264|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI | 264|`MAGIC_SWAP_LCTL_LGUI` | |Swap Left Control and GUI |
265|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI | 265|`MAGIC_SWAP_RCTL_RGUI` | |Swap Right Control and GUI |
266|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI | 266|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI |
267|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI | 267|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI |
268|`MAGIC_NO_GUI` | |Disable the GUI key | 268|`MAGIC_NO_GUI` | |Disable the GUI key |
269|`MAGIC_SWAP_GRAVE_ESC` | |Swap <code>&#96;</code> and Escape | 269|`MAGIC_SWAP_GRAVE_ESC` | |Swap <code>&#96;</code> and Escape |
270|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace | 270|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
271|`MAGIC_HOST_NKRO` | |Force NKRO on | 271|`MAGIC_HOST_NKRO` | |Force NKRO on |
272|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides | 272|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
273|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Ctrl and GUI on both sides (for macOS)| 273|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Ctrl and GUI on both sides (for macOS)|
274|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control | 274|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control |
275|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control | 275|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control |
276|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI | 276|`MAGIC_UNSWAP_LCTL_LGUI` | |Unswap Left Control and GUI |
277|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI | 277|`MAGIC_UNSWAP_RCTL_RGUI` | |Unswap Right Control and GUI |
278|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI | 278|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
279|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI | 279|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
280|`MAGIC_UNNO_GUI` | |Enable the GUI key | 280|`MAGIC_UNNO_GUI` | |Enable the GUI key |
281|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>&#96;</code> and Escape| 281|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>&#96;</code> and Escape |
282|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace | 282|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
283|`MAGIC_UNHOST_NKRO` | |Force NKRO off | 283|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
284|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides | 284|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
285|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides | 285|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Ctrl and GUI on both sides |
286|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides | 286|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
287|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides | 287|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Ctrl and GUI swap on both sides |
288|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off | 288|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
289|`MAGIC_EE_HANDS_LEFT` | |Set "Left Hand" for EE_HANDS handedness |
290|`MAGIC_EE_HANDS_RIGHT` | |Set "Right Hand" for EE_HANDS handedness |
289 291
290## [Bluetooth](feature_bluetooth.md) 292## [Bluetooth](feature_bluetooth.md)
291 293
diff --git a/quantum/quantum.c b/quantum/quantum.c
index ec80fa557..16922dd01 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -544,7 +544,7 @@ bool process_record_quantum(keyrecord_t *record) {
544# endif 544# endif
545#endif 545#endif
546 case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI: 546 case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
547 case MAGIC_SWAP_LCTL_LGUI ... MAGIC_TOGGLE_CTL_GUI: 547 case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
548 if (record->event.pressed) { 548 if (record->event.pressed) {
549 // MAGIC actions (BOOTMAGIC without the boot) 549 // MAGIC actions (BOOTMAGIC without the boot)
550 if (!eeconfig_is_enabled()) { 550 if (!eeconfig_is_enabled()) {
@@ -662,6 +662,12 @@ bool process_record_quantum(keyrecord_t *record) {
662 case MAGIC_TOGGLE_NKRO: 662 case MAGIC_TOGGLE_NKRO:
663 keymap_config.nkro = !keymap_config.nkro; 663 keymap_config.nkro = !keymap_config.nkro;
664 break; 664 break;
665 case MAGIC_EE_HANDS_LEFT:
666 eeconfig_update_handedness(true);
667 break;
668 case MAGIC_EE_HANDS_RIGHT:
669 eeconfig_update_handedness(false);
670 break;
665 default: 671 default:
666 break; 672 break;
667 } 673 }
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index af984a7cd..5fac6a5ca 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -502,6 +502,8 @@ enum quantum_keycodes {
502 MAGIC_SWAP_CTL_GUI, 502 MAGIC_SWAP_CTL_GUI,
503 MAGIC_UNSWAP_CTL_GUI, 503 MAGIC_UNSWAP_CTL_GUI,
504 MAGIC_TOGGLE_CTL_GUI, 504 MAGIC_TOGGLE_CTL_GUI,
505 MAGIC_EE_HANDS_LEFT,
506 MAGIC_EE_HANDS_RIGHT,
505 507
506 // always leave at the end 508 // always leave at the end
507 SAFE_RANGE 509 SAFE_RANGE
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c
index 5114b188e..d16a98977 100644
--- a/quantum/split_common/split_util.c
+++ b/quantum/split_common/split_util.c
@@ -7,7 +7,6 @@
7#include "quantum.h" 7#include "quantum.h"
8 8
9#ifdef EE_HANDS 9#ifdef EE_HANDS
10# include "tmk_core/common/eeprom.h"
11# include "eeconfig.h" 10# include "eeconfig.h"
12#endif 11#endif
13 12
@@ -23,7 +22,7 @@ __attribute__((weak)) bool is_keyboard_left(void) {
23 setPinInput(SPLIT_HAND_PIN); 22 setPinInput(SPLIT_HAND_PIN);
24 return readPin(SPLIT_HAND_PIN); 23 return readPin(SPLIT_HAND_PIN);
25#elif defined(EE_HANDS) 24#elif defined(EE_HANDS)
26 return eeprom_read_byte(EECONFIG_HANDEDNESS); 25 return eeconfig_read_handedness();
27#elif defined(MASTER_RIGHT) 26#elif defined(MASTER_RIGHT)
28 return !is_keyboard_master(); 27 return !is_keyboard_master();
29#endif 28#endif
diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c
index 09b1664c9..bb2aa0db8 100644
--- a/tmk_core/common/bootmagic.c
+++ b/tmk_core/common/bootmagic.c
@@ -122,6 +122,14 @@ void bootmagic(void) {
122 default_layer = eeconfig_read_default_layer(); 122 default_layer = eeconfig_read_default_layer();
123 default_layer_set((layer_state_t)default_layer); 123 default_layer_set((layer_state_t)default_layer);
124 } 124 }
125
126 /* EE_HANDS handedness */
127 if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) {
128 eeconfig_update_handedness(true);
129 }
130 if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_RIGHT)) {
131 eeconfig_update_handedness(false);
132 }
125} 133}
126 134
127/** \brief Scan Keycode 135/** \brief Scan Keycode
diff --git a/tmk_core/common/bootmagic.h b/tmk_core/common/bootmagic.h
index fb7647257..c64dc1785 100644
--- a/tmk_core/common/bootmagic.h
+++ b/tmk_core/common/bootmagic.h
@@ -36,6 +36,12 @@
36#ifndef BOOTMAGIC_KEY_DEBUG_MOUSE 36#ifndef BOOTMAGIC_KEY_DEBUG_MOUSE
37# define BOOTMAGIC_KEY_DEBUG_MOUSE KC_M 37# define BOOTMAGIC_KEY_DEBUG_MOUSE KC_M
38#endif 38#endif
39#ifndef BOOTMAGIC_KEY_EE_HANDS_LEFT
40# define BOOTMAGIC_KEY_EE_HANDS_LEFT KC_L
41#endif
42#ifndef BOOTMAGIC_KEY_EE_HANDS_RIGHT
43# define BOOTMAGIC_KEY_EE_HANDS_RIGHT KC_R
44#endif
39 45
40/* 46/*
41 * keymap config 47 * keymap config
diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c
index 61aaec205..933ac42bd 100644
--- a/tmk_core/common/eeconfig.c
+++ b/tmk_core/common/eeconfig.c
@@ -153,8 +153,8 @@ uint32_t eeconfig_read_kb(void) { return eeprom_read_dword(EECONFIG_KEYBOARD); }
153 * 153 *
154 * FIXME: needs doc 154 * FIXME: needs doc
155 */ 155 */
156
157void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); } 156void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); }
157
158/** \brief eeconfig read user 158/** \brief eeconfig read user
159 * 159 *
160 * FIXME: needs doc 160 * FIXME: needs doc
@@ -166,9 +166,24 @@ uint32_t eeconfig_read_user(void) { return eeprom_read_dword(EECONFIG_USER); }
166 */ 166 */
167void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); } 167void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); }
168 168
169/** \brief eeconfig read haptic
170 *
171 * FIXME: needs doc
172 */
169uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); } 173uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); }
170/** \brief eeconfig update user 174/** \brief eeconfig update haptic
171 * 175 *
172 * FIXME: needs doc 176 * FIXME: needs doc
173 */ 177 */
174void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); } 178void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); }
179
180/** \brief eeconfig read split handedness
181 *
182 * FIXME: needs doc
183 */
184bool eeconfig_read_handedness(void) { return !!eeprom_read_byte(EECONFIG_HANDEDNESS); }
185/** \brief eeconfig update split handedness
186 *
187 * FIXME: needs doc
188 */
189void eeconfig_update_handedness(bool val) { eeprom_update_byte(EECONFIG_HANDEDNESS, !!val); }
diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h
index aea4eff9f..308f865e1 100644
--- a/tmk_core/common/eeconfig.h
+++ b/tmk_core/common/eeconfig.h
@@ -107,4 +107,7 @@ uint32_t eeconfig_read_haptic(void);
107void eeconfig_update_haptic(uint32_t val); 107void eeconfig_update_haptic(uint32_t val);
108#endif 108#endif
109 109
110bool eeconfig_read_handedness(void);
111void eeconfig_update_handedness(bool val);
112
110#endif 113#endif